2014-05-01 105 views
0

當我使用python,我總是在想,如果python使用多線程默認情況下,或不寫代碼。Python是否默認使用線程?

假設如

l = [10, 20, 30, 40, 50, 60, 70, 80, 90] 
print reduce(lambda x, y: x + y, l)/len(l) 

將使用多線程處理容易地進行的碼。通過讓線程獲得列表的小集合的總和。

總之,確實蟒蛇默認情況下使用多線程,當它可能不?或者總是使用一個?

回答

4

無需顯式定義線程行爲,Python不使用其他的線程。此外,由於解釋器的內存處理不是線程安全的,因此在Python中的線程並不總是完全正常工作,因爲Global Interpreter Lock

+2

Python中的某些實現不使用GIL –

+0

+1,還有其他版本,除了CPython,儘管這是「標準」。 –

1

號您的代碼將順序運行。

另外你的例子是依靠你除了用整數的結合性的知識。

Python不知道這是一個整數列表,或者另外將是聯想爲你添加的對象。

特別是,如果你的列表是浮動的列表,順序,你把它們加起來可以影響結果