2013-11-20 146 views
-1

我知道PHP現在支持Threads,我讀了here Python多線程並不比Java中的多線程更好,因爲Python在GIL方面存在一些問題。多線程PHP與多線程Python

因此,我認爲Python多線程也不會比在PHP中的多線程技術更好。由於PHP使用像java一樣的風格來創建線程,另外php使用pthread來實現線程,這是廣泛流行的庫。

你有什麼建議?

+0

您是否要求提供語言建議?與往常一樣,答案是「使用最適合您的項目的任何東西」。如果你必須讓線程不受GIL限制,那麼不要使用Python。 – Kevin

+0

Java與這個問題有什麼關係? –

+0

如果python線程不比java更好,所以我認爲python線程也不比php更好。 –

回答

-2

Python確實擁有Global Interpreter Lock。這意味着您不能使用線程在同一臺機器上的多個內核上傳播一個程序。但是,在多核上運行相同的程序並不是線程設計的目的,而且這樣做並不容易。但是,您可以使用multiprocessing模塊在多個內核上分發程序,所以這沒什麼大不了的。

我不知道PHP是否有GIL,但正如你在上面看到的,它並不重要。

即使PHP的線程略優於Pythons,這也是選擇PHP的一個不好的理由。事實上,除了「我沒有選擇」之外幾乎任何理由都是一個不好的理由。 Ref1Ref2

+0

「你不能使用線程」並不嚴格地使用多個內核。 GIL意味着沒有兩個內核可以同時在主CPython的解釋器代碼中執行。但是,即使使用帶有線程的GIL,您仍然會看到一些工作負載的一些好處。但是,正如您所說,多處理模塊(自2.6版起在標準庫中)是最好的方法。請注意,CPython的某些C /二進制擴展(例如Numpy)是爲了釋放GIL並擁有自己的多線程支持而編寫的。所以一些計算工作負載也可以從多個內核中受益。 –