为什么我的 Python 线程在不应该启动的时候启动?



我有一个测试脚本:

import threading
import time
isWaiting = 0
def wait():
global isWaiting
time.sleep(1)
isWaiting = 0
myThread = threading.Thread(target=wait)
while True:
if isWaiting == 0:
print("Starting threadn")
isWaiting = 1
myThread.start()

然而,在等待的第一秒之后,它以错误";线程只能启动一次";。我做错了什么?

问题是您在没有加入重新初始化的情况下立即启动同一个线程。

import threading
import time
isWaiting = 0
def wait():
global isWaiting
time.sleep(1)
isWaiting = 0
while True:
if isWaiting == 0:
myThread = threading.Thread(target=wait)
print("Starting threadn")
isWaiting = 1
myThread.start()
myThread.join()

需要注意的事项:

  • 您不能重用同一个线程,请重新初始化它
  • 如果你想按顺序运行线程,即一个接一个地运行,那么在启动另一个线程之前,你必须先thread.join()

在线程等待的第二秒内,循环再次运行,myThread.start()再次调用,但线程已经在运行。您必须等待线程完成(使用join(,或者最好使用同步对象。

最新更新