0

我想從人口中抽取樣本,然後對樣本進行一些操作。我想用Python編程。我是否必須使用多處理,多線程或類似map-reduce? 我該如何測試它是否真的更快?在我的Macbook-Air上,當我使用線程進行簡單打印時,速度不會更快,然後如果我執行正常循環。如何通過並行計算更快地創建Python程序?

+0

歡迎來到堆棧溢出。全部取決於您需要分析的樣品數量以及它們的大小。通常任何低於10億或更多的東西,你不需要任何比正常循環更多的東西,也許在代碼中有一些最優化。但是這只是泛化。如果你提供更具體的信息 - 有人可以幫助例如。每個樣本的大小,對需要完成樣本的操作;存儲器中的樣本數量。 – nakashu

+1

爲了提供幫助,最好查看一下您目前正在嘗試的內容。也許你可以發佈你的代碼的簡化版本。 – Dave

+0

非常感謝。 當我更確切地知道我真正想要做什麼時,我會更具體。 你能告訴我,爲什麼它不是更快,當我想用​​python打印1000次「Hello World」時,我做了一個簡單的for循環和wenn我做了一個for循環並啓動線程。 在簡單的筆記本電腦(mac-air)上線程速度更快,還是更快,當我開始在大型機器上進行時?謝謝。 –

回答

0

假設你在談論cPython,這個實現有一個被稱爲GIL(全局解釋器鎖)的東西,它不會讓線程在多個CPU核上執行,所以線程庫實際上不能並行,這可以解釋爲什麼你的打印測試不是更快。假設您瞭解您的問題,並且已將問題正確劃分爲並行性,那麼multiprocessing庫可以幫助您並行運行問題。

相關問題