吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 997|回复: 4
收起左侧

[已解决] Python多线程退出问题

[复制链接]
∫護着妳佉遠方 发表于 2022-1-30 20:22
本帖最后由 ∫護着妳佉遠方 于 2022-1-31 15:41 编辑

Python多线程中,主线程等子线程退以后主线程才能退出
我写的这个为什么不能退出啊,运行完毕以后,不打印 "票卖完",一直在卡在哪里
求助,问题原因和解决办法


[Python] 纯文本查看 复制代码
"""
 * @codding : utf-8
 * [url=home.php?mod=space&uid=238618]@Time[/url]  : 2022/1/30 20:18:41
 * [url=home.php?mod=space&uid=170990]@name[/url]   : 卖票系统.py
 * [url=home.php?mod=space&uid=153612]@system[/url]  : Windows 11
 * @Types    : pythonProject
 * [url=home.php?mod=space&uid=371834]@SOFTWARE[/url] : PyCharm
 * [url=home.php?mod=space&uid=686208]@AuThor[/url]   :  
"""
import time
import threading


lock = threading.Lock()
g_num = 100


def one_thread(name):
    while True:
        # 上锁
        lock.acquire()
        global g_num
        if g_num == 0:
            break
        else:
            g_num -= 1
            print('{}正在执行,当前还剩{}张票'.format(name, g_num))
            # 执行完毕,释放锁
            lock.release()
            time.sleep(0.2)


if __name__ == '__main__':
    thread1 = threading.Thread(target=one_thread, args={"线程一"})
    thread2 = threading.Thread(target=one_thread, args={"线程二"})
    thread3 = threading.Thread(target=one_thread, args={"线程三"})
    thread1.start()
    thread2.start()
    thread3.start()

    thread1.join()
    thread2.join()
    thread3.join()
    print('票全部卖完')



发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

SDU123 发表于 2022-1-30 20:35
[Python] 纯文本查看 复制代码
        if g_num == 0:
            lock.release()  #这里没有释放锁
            break
dragonjelly 发表于 2022-1-30 22:39
楼上大哥说的是,你这个循环有问题,把释放锁放里面执行不到,执行到票卖完了直接就进入g_num=0了,break了,把释放锁的函数放到外面就可以了
arryboom 发表于 2022-1-30 23:18
try{
    //可能抛出异常
}catch(Exception e){
    //捕获异常
}finally{
    //不管有无异常都执行
}


把锁释放放到Finally里面,前面的放到try里面
 楼主| ∫護着妳佉遠方 发表于 2022-1-31 08:58
arryboom 发表于 2022-1-30 23:18
try{
    //可能抛出异常
}catch(Exception e){

多谢,我懂了,一直没有考虑到,谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表