如何关闭用于运行方法的线程?

2024-10-02 10:30:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我设置了多个需要同时运行的方法。我决定为上述方法创建单独的线程。还有一个方法,我的唯一目的是创建另一个线程。这是我所做的一个例子。我的问题是,如何才能安全地关闭这些线程?你知道吗

from threading import Thread

....

def startOtherThread():
    Thread(target = myMethod).start()

Thread(target = anotherMethod).start()

....

Tags: 方法fromimport目的targetdef线程thread
1条回答
网友
1楼 · 发布于 2024-10-02 10:30:11

不关闭线程。它们将一直运行,直到您的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()

相关问题 更多 >

    热门问题