2014-10-12 44 views
1

我無法理解Python中的線程。我有這樣的程序:如何正確地關閉Python中的線程

import _thread, time 

def print_loop(): 
    num = 0 
    while 1: 
     num = num + 1 
     print(num) 
     time.sleep(1) 

_thread.start_new_thread(print_loop,()) 

time.sleep(10) 

我的問題是,如果我需要關閉線程print_loop,因爲在我看來,這兩個線程在主線程結束結束。這是處理線程的正確方法嗎?

回答

3

首先,除非您絕對必須避免使用低級API。 threading模塊優於_thread。通常在Python中,避免任何以下劃線開頭的東西。

現在,您正在尋找的方法被稱爲join。即

import time 
from threading import Thread 

stop = False 

def print_loop(): 
    num = 0 
    while not stop: 
     num = num + 1 
     print(num) 
     time.sleep(1) 

thread = Thread(target=print_loop) 
thread.start() 

time.sleep(10) 

stop = True 
thread.join()