Python time.sleep 杀死线程

Posted

技术标签:

【中文标题】Python time.sleep 杀死线程【英文标题】:Python time.sleep kills the Thread 【发布时间】:2021-11-13 10:47:29 【问题描述】:

我在 Windows 上使用 Portable Python 3.9.4 x64,每次我调用 time.sleep(...) 方法时,线程都会退出并且不会返回:

import threading
import time

threads = []
print ("hello")

class myThread(threading.Thread):
    def __init__(self, i):
        threading.Thread.__init__(self)
        self.i = i

    def run(self):
        print ("i = ", self.i)
        for j in range(0, self.i):
            print ("i: ", i,"j = ",j)
            time.sleep(5)

for i in range(1,4):
    thread = myThread(i)
    thread.daemon = False
    thread.start()

我的输出是:

hello
i =  1
i:  1 j =  0
i =  2
i:  2 j =  0
i =  3
i:  3 j =  0

如果我使用更短的延迟,例如time.sleep(0.05),那么我会得到更多的 j 值,但仍然不是全部。 所以我猜所有线程都被杀死了,因为主线程完成了。但是我怎样才能保持线程运行呢? daemon-attribute 似乎没有改变任何东西......

【问题讨论】:

【参考方案1】:

我认为你的 time.py 模块文件有问题。如果您使用的是本地,请重新下载文件,或者如果您在线,请尝试联系并报告此问题。

【讨论】:

嗯,我不知道该怎么做,或者如果可能的话:***.com/questions/42522650/cant-install-time-module/…你能给我一个建议吗? 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于Python time.sleep 杀死线程的主要内容,如果未能解决你的问题,请参考以下文章

在多线程程序中添加 time.sleep 解决了 python 中的 UnicodeDecodeError

python函数深入浅出 16.time.sleep()函数详解

python基础之进程线程

time.sleep -- 休眠线程或进程?

Python time.sleep 需要更长的时间

python中的线程