我已經看到了很多關於使用python的multiprocessing
的問題,但是我還沒有能夠在我的代碼中如何使用它。Python中的並行編程數組處理
假設我有一個NxM數組。我有一個函數f
比較(i,j)與其他每個像素的值。所以,本質上,我計算網格上每個點的NxM值。
我的機器有四個內核。我想我會將輸入位置分成四個象限,然後將每個象限送入不同的過程。
所以,schemetically,我當前的代碼是:
def f(x, array):
"""
For input location x, do some operation
with every other array value. As a simple example,
this could be the product of array[x] with all other
array values
"""
return array[x]*array
if __name__ == '__main__':
array = some_array
for x in range(array.size):
returnval = f(x,array)
`
什麼是在這樣的利用多重優化問題的最佳策略是什麼?
你想如何存儲答案?在另一個陣列? – bbayles
如果你的問題是數學上的,你可能想看看'numpy'。儘管在CPython中綁定了GIL的單核性能,但numpy代碼會釋放它,所以您的代碼在使用線程+ numpy時比使用多處理時更有效。 – myaut
@bbayles是的,它必須是另一個相同大小的數組,NxM。因此保留訂單非常重要。 – user1991