Jon*_*han 5 python parallel-processing
我正在使用ParallelPython来开发一个性能关键的脚本.我想在系统上运行的8个进程之间共享一个值.请原谅这个简单的例子,但这说明了我的问题.
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])
Run Code Online (Sandbox Code Playgroud)
pp文档似乎没有描述跨进程共享数据的方法.可能吗?
如果是这样,是否有标准锁定机制(如在线程模块中)确认一次只进行一次更新?
l = Lock()
if(el < min):
l.acquire
if(el < min):
min = el
l.release
Run Code Online (Sandbox Code Playgroud)
我知道我可以保留一个本地最小值并比较一次返回主线程中的4,但通过共享该值,我可以更好地修剪我的BFS二叉树并可能节省大量的循环迭代.
谢谢-
乔纳森
实际上, http://www.parallelpython.com/content/view/17/31/#CALLBACK有一个示例,它们只是使用线程模块中的锁。
就像 JudoWill 指出的那样,请务必尝试在工作中同步全局最小值的频率。如果您每次都这样做,您最终可能会接近序列化整个计算。
| 归档时间: |
|
| 查看次数: |
975 次 |
| 最近记录: |