2012-08-14 42 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()