簡體   English   中英

Python“打印”導致線程死鎖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM