Site icon 腳本酒

python 多執行緒(thread)

這一篇文章是要說當你要同時做很多事情時,就可以用到threading達成多執行緒

import threading 引入 threading
thread.start() 線程啟動
thread.join() 等待線程中止,也可以當作排隊用的

thread.is_alive() , thread.isAlive(): 返回線程是否活動的。

import threading

#q=Queue.Queue()
def thread_job():
	sum=0
	print 'T1 start\n'
	for i in range(10):
		print "t1:"
		print i
		sum+=i
		time.sleep(0.5)
	print sum
	q.put(sum)
	
	print 'T1 finish\n'

def T2_job():
	print 'T2 start\n'
	#a=q.get()
	a=46
	for i in range(5):
		print "t2:"
		a+=i
		print a
		time.sleep(2)
	
	print a
	print 'T2 finish\n'

Thread1=threading.Thread(target=thread_job)
Thread2=threading.Thread(target=T2_job)
Thread1.start()
Thread2.start()

target= function的名稱
上面的結果是Thread1和Thread2這兩條執行緒同時跑
結果:

假如要做排程而不是同時處理的話可以用join()

thread部分可以改成這樣:

Thread1.start()
Thread1.join()
Thread2.start()

所以Thread1執行完才會執行Thread2
結果:

要等其他執行緒完成在進行下一步動作的話可以用 is_alive(),他可以看執行緒是否已完成

thread部分可以改成這樣:

Thread1=threading.Thread(target=thread_job)
Thread2=threading.Thread(target=T2_job)
Thread3=threading.Thread(target=T2_job)
Thread1.start()
Thread1.join()
Thread2.start()
Thread3.start()
while Thread2.is_alive() or Thread3.is_alive(): #or Thread3.is_alive():  
		time.sleep(1)    
print u"你成功了"

結果:

Exit mobile version