我有一个测试脚本:
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
(,或者最好使用同步对象。