我有一个包含工人和经理线程的大型系统。
我遇到了其中一个线程使用的问题:
print "before time sleep"
time.sleep(5)
print "after time sleep"
它会打印很多次,然后突然只显示"在睡觉前#34; 并停止,直到我杀死所有其他线程。 没有其他线程正在停止。
我认为代码的其他部分是锁定命令行输出或类似的东西,但我不知道如何找到该位置(它可能需要最多24小时才能发生)
我正在使用python 2.7,并且在Windows服务器上发生错误。
答案 0 :(得分:0)
我有同样的问题,取决于我在print方法的“end”属性中作为值放置的内容,我得到了一个threadLock:
from queue import LifoQueue
import threading
q = LifoQueue()
for i in range(100):
q.put(i)
def process_job(q, threadName):
while not q.empty():
print(q.get(), end=' ')
workers = [
threading.Thread(target=process_job, args=(q,'1')),
threading.Thread(target=process_job, args=(q,'2')),
threading.Thread(target=process_job, args=(q,'3')),
]
for w in workers:
w.setDaemon(True)
w.start()
最有趣的部分是它完美运作(只要结尾的值为空白“”)。