我设置了多个需要同时运行的方法。我决定为上述方法创建单独的线程。我还有一个方法,其唯一目的是创建另一个线程。这是我所做的一个例子。我的问题是,如何安全地关闭这些线程?
from threading import Thread
....
def startOtherThread():
Thread(target = myMethod).start()
Thread(target = anotherMethod).start()
....
最佳答案
您没有关闭线程。它们将运行直到您的 target= 方法完成。目前尚不清楚为什么您要尝试引入单独的方法来启动线程: Thread(target=...).start()
看起来很简单。
当您使用线程时,您有三个基本选项:
- 在主线程中等待,直到子线程使用 join()
函数完成
- 不做任何事情就让子线程运行
- 当主线程结束时,通过在线程对象上使用 setDeamon(True) 退出子线程。
还需要了解cPython中的GIL(全局解释器锁)
这是一些线程的基本测试代码:
import threading
import time
import sys
def f():
sys.stderr.write("Enter\n")
time.sleep(2)
sys.stderr.write("Leave\n")
if __name__ == '__main__':
t0 = threading.Thread(target=f)
t1 = threading.Thread(target=f)
t0.start()
time.sleep(1)
t1.setDaemon(True)
t1.start()
#t1.join()
关于python - 如何关闭用于运行方法的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11959434/