2012-08-14 43 views
1

我有多个方法需要同时运行。我决定为所述方法创建单独的线程。还有一种方法是我创建另一个线程的唯一目的。这是我所做的一个例子。我的问题是,我怎样才能安全地关闭这些线程?如何关闭此线程用于运行方法?

from threading import Thread 

.... 

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

Thread(target = anotherMethod).start() 

.... 
+0

详情参见以下问题:HTTP:// stackoverflow.com/questions/323972/is-there-any-way-to-kill-a-thread-in-python – 2012-08-14 23:23:37

回答

2

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