标题:python多线程问题
只看楼主
xing5156
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-6-11
 问题点数:0 回复次数:1 
python多线程问题

程序代码:
from threading import Lock, Thread
import time

class Test():
    def __init__(self):
        self.countFlag = 0
        self.testList = []
        self.lock = Lock()
        for i in range(10000):
            self.testList.append(i)

    def pt(self, name):
        print(name)
        while self.countFlag < len(self.testList):
            self.lock.acquire()
            print(self.testList[self.countFlag])
            # time.sleep(1)
            self.countFlag += 1
            self.lock.release()

if __name__ == "__main__":
    test = Test()
    thdList = []
    for i in  range(5):
        t = Thread(target=test.pt, args=("线程" + str(i) + '\n',))
        t.setDaemon(True)
        thdList.append(t)
        t.start()
    for t in thdList:
        t.join()


线程1执行输出了一个0,其他线程都没输出,后面就线程4一直输出;请教一下 为啥只有一个线程在执行?哪里的问题?
搜索更多相关主题的帖子: python 多线程 线程 Test Lock 
2020-06-11 11:52
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:240
专家分:2086
注 册:2019-8-16
得分:0 
回复 楼主 xing5156
有什么问题?程序运行没有违背程序的逻辑.如果你想他们依次执行可以在pt下的while 循环外加个time.sleep(1)
2020-06-15 15:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502060-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.794252 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved