2014-06-11 85 views
0

我想吞掉線程,並開始與當週例子Python模塊:使用python啓動多個線程?

根據下面的代碼

import threading 

def worker(arg=None): 
    """thread worker function""" 
    print 'Worker thread: %s\n' % arg 
    return 

threads = [] 
for i in range(5): 
    t = threading.Thread(target=worker, args=str(i), name="threadingPrac") 
    threads.append(t) 
    t.start() 

,這是否意味着我開始5個線程?

我剛剛開始使用線程,所以想更好地理解它。

回答

1

是的。

加上import timetime.sleep(5)之後的打印語句就更好看了。

import threading 
import time 

def worker(arg=None): 
    """thread worker function""" 
    print 'Worker thread: %s\n' % arg 
    time.sleep(5) 
    return 

threads = [] 
for i in range(5): 
    t = threading.Thread(target=worker, args=str(i), name="threadingPrac") 
    threads.append(t) 
    t.start() 
+0

什麼,我不明白的是這些線程不會同時啓動,因爲循環會逐個執行每個線程,因此線程的使用方式會有所幫助?這是否意味着第一個線程啓動並且第二個線程在下一個迭代級別被調用,那麼第二個線程將與第一個線程並行執行,等等。 –

+5

也許你應該閱讀一些關於線程的一般文本。你可以從http://en.wikipedia.org/wiki/Thread_(computing)開始。 –

+2

@san你是對的。每個後續的線程將在每個循環中開始並執行它們的操作。 Python受GIL影響,所以你應該考慮只在I/O綁定任務的情況下使用線程而不是計算任務。在計算任務的情況下,想要實現並行處理,你應該去多處理。 –

0

是的,你可以在你的代碼的底部添加此行檢查列表threads長度:

print len(threads) 

輸出:

5 #Number of threads