我想使用python's
multiprocessing
模塊來利用多核心Linux服務器。Python - 在進程之間共享一個Numpy數組?
我需要所有進程對同一共享內存具有讀/寫訪問權限。
代替使用list
或queue
的,是有可能有一個多維numpy
陣列作爲共享對象?
我想使用python's
multiprocessing
模塊來利用多核心Linux服務器。Python - 在進程之間共享一個Numpy數組?
我需要所有進程對同一共享內存具有讀/寫訪問權限。
代替使用list
或queue
的,是有可能有一個多維numpy
陣列作爲共享對象?
看看this。我看起來不容易,但它是可行的。
我想我知道你在找什麼:https://bitbucket.org/cleemesser/numpy-sharedmem/issue/3/casting-complex-ndarray-to-float-in
有一個在網頁句話的簡短描述:通過Sturla莫爾登和G. Varoquaux numpy的共享內存模塊,可以很容易地共享內存NumPy數組形式的進程之間。最初發布到SciPy用戶郵件列表。
我,我自己就是這樣使用它。在進程之間共享NumPy數組。對我來說工作得很好。
我發現,即使你在fork()'一堆子進程之後沒有修改你的numpy數組,你仍然會看到你的RAM暴漲,因爲子進程會因爲某種原因而寫入對象。
您可以通過設置
"yourArray.flags.writeable = False"
BEFORE fork()的限制(或完全緩解?)這個問題 'ING /泳池()' ING這似乎保持RAM使用下來,是少了很多麻煩比其他方法:)
謝謝。看起來像一個好的開始。 – user3262424