我想分割下面的代碼,以允許在python中進行多處理,它對我來說真的變成了一項令人沮喪的任務 - 我是多處理新手,已閱讀文檔和儘可能多的示例發現但仍然沒有找到一種解決方案,一次可以在所有cpu內核上運行。Python中迭代多重處理
我想將迭代器拆分成四分之一,並讓它平行計算測試。
我單線程例如:
import itertools as it
import numpy as np
wmod = np.array([[0,1,2],[3,4,5],[6,7,3]])
pmod = np.array([[0,1,2],[3,4,5],[6,7,3]])
plines1 = it.product(wmod[0],wmod[1],wmod[2])
plines2 = it.product(pmod[0],pmod[1],pmod[2])
check = .915
result = []
for count, (A,B) in enumerate(zip(plines1,plines2)):
pass
test = (sum(B)+10)/(sum(A)+12)
if test > check:
result = np.append(result,[A,B])
print('results: ',result)
我意識到這是一對3×3矩陣的一個非常小的例子,但我想將它應用到一對較大的矩陣,並採取有關一小時計算。我很欣賞給出的任何建議。
嗯,一方面,我會將'result = np.append(result,[A,B])'從循環內部移出。你爲什麼在這裏使用'numpy'數組而不是'list'?像這樣追加對於數組和列表來說效率非常低。奇怪的是你也使用'result = []'... –
爲了擴展性和效率,我決定使用numpy。正如我所說的,3x3矩陣僅用於此示例。而for循環是一個迭代,它不會保留數據,除非我以某種方式檢索它。 –
是的,但'numpy'不會讓你的代碼更具可伸縮性。像這樣使用'numpy'會產生相反的效果。 –