繁体   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