[英]Python “print” causes threading deadlock
我有一個帶有工作人員和管理人員線程的大型系統。
我遇到了一個線程使用的問題:
print "before time sleep"
time.sleep(5)
print "after time sleep"
它會同時打印很多次,然后突然只顯示“ before time sleep”,然后停止直到我殺死所有其他線程。 其他線程均未停止。
我認為代碼的其他部分正在鎖定命令行輸出或類似的內容,但是我不知道如何找到該位置(它可能需要24小時才能發生)
我正在使用python 2.7,並且該錯誤在Windows服務器上發生。
我有同樣的問題,具體取決於我在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()
最有趣的部分是,它可以完美運行(只要結尾的值是空白“”)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.