簡體   English   中英

為什么python線程一旦完成就不能再次運行?

[英]Why can't python threads run again once they have finished?

假定以下最簡單的線程示例

from threading import Thread
from time import sleep

def main():
    t = Thread(target=foo)
    t.daemon = True
    t.start()
    sleep(100)
    t.start()

def foo():
    print "foo!"

main()

這將嘗試運行兩次t
第一次成功,但是第二次拋出異常,指出“線程只能運行一次”

這種行為對我來說毫無意義。 我希望完成的線程可以重新開始。

我的問題是, 為什么線程一旦結束就不允許再次啟動?


這個問題獲得了“不清楚您要問的是什么”的投票-請告訴我如何更好地解釋

這個問題得到了“基於意見”的投票。 這不是基於觀點的。 我要你解釋python的設計決策。 我希望他們不要直覺。 我很確定他們沒有。

您不能多次運行同一線程的更深層原因與您不能多次執行同一行的原因相同。 即使您住在所有相同的地方,並且當您第二次回去時都做同樣的事情,那仍然是另一回事。

線程(真正的線程 ,而不是使您能夠啟動和管理線程的Thread對象)是代碼的執行(即,遍歷代碼)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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