2024-10-02 10:30:11 发布
网友
我设置了多个需要同时运行的方法。我决定为上述方法创建单独的线程。还有一个方法,我的唯一目的是创建另一个线程。这是我所做的一个例子。我的问题是,如何才能安全地关闭这些线程?你知道吗
from threading import Thread .... def startOtherThread(): Thread(target = myMethod).start() Thread(target = anotherMethod).start() ....
不关闭线程。它们将一直运行,直到您的target=方法完成。现在还不清楚为什么要引入单独的方法来启动线程:Thread(target=...).start()看起来足够简单。你知道吗
Thread(target=...).start()
使用线程时,有三个基本选项: -在主线程中等待,直到子线程使用join()函数完成 -只需让子线程不做任何事情就可以运行 -当主线程结束时,通过对线程对象使用setDeamon(True)退出子线程。你知道吗
join()
您还需要了解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()
不关闭线程。它们将一直运行,直到您的target=方法完成。现在还不清楚为什么要引入单独的方法来启动线程:
Thread(target=...).start()
看起来足够简单。你知道吗使用线程时,有三个基本选项:
-在主线程中等待,直到子线程使用
join()
函数完成-只需让子线程不做任何事情就可以运行
-当主线程结束时,通过对线程对象使用setDeamon(True)退出子线程。你知道吗
您还需要了解cPython中的GIL(全局解释器锁)
以下是线程的一些基本测试代码:
相关问题 更多 >
编程相关推荐