我正在使用ParallelPython來開發一個性能至關重要的腳本。我想在系統上運行的8個進程之間共享一個值。請原諒這個微不足道的例子,但這說明了我的問題。並行共享值python
def findMin(listOfElements):
for el in listOfElements:
if el < min:
min = el
import pp
min = 0
myList = range(100000)
job_server = pp.Server()
f1 = job_server.submit(findMin, myList[0:25000])
f2 = job_server.submit(findMin, myList[25000:50000])
f3 = job_server.submit(findMin, myList[50000:75000])
f4 = job_server.submit(findMin, myList[75000:100000])
pp文檔似乎沒有描述跨進程共享數據的方式。可能嗎?
如果是這樣,是否有一個標準的鎖定機制(如線程模塊中)來確認一次只進行一次更新?
l = Lock()
if(el < min):
l.acquire
if(el < min):
min = el
l.release
我明白我可以保持一個本地分鐘,比較4在主線程返回一次,但通過共享的價值,我可以做我的BFS二叉樹的一些更好的修剪和節省很多的循環迭代。
Thanks-
喬納森