【发布时间】:2014-11-07 12:25:12
【问题描述】:
好吧,我对 python 和多处理还是很陌生,我需要知道的是,是否有任何方法可以让活动进程等待类似“所有进程都使用给定资源完成”,然后继续他们的工作。是的,我真的需要他们等待,主要目的与同步有关。这不是关于完成进程并加入它们,而是在它们运行时等待,我应该使用条件/事件之类的东西吗?我在任何地方都找不到真正有用的东西。
应该是这样的:
import multiprocessing
def worker(args):
#1. working
#2. takes the resource from the manager
#3. waits for all other processes to finish the same step above
#4. returns to 1.
if __name__ == '__main__':
manager = multiprocessing.Manager()
resource = manager.something()
pool = multiprocessing.Pool(n)
result = pool.map(worker, args)
pool.close()
pool.join()
编辑:“工作”部分比其他部分花费更多时间,所以我仍然利用多处理,即使对单个资源的访问是串行的。假设问题是这样工作的:我有多个进程运行解决方案查找器(一种进化算法),并且每个“n”解决方案,我使用该资源在这些进程之间交换一些数据并使用信息改进解决方案。所以,我需要他们所有人在交换该信息之前等待。这有点难以解释,我并不是真的在这里讨论这个理论,我只是想知道是否有任何方法可以做我试图在主要问题中描述的内容。
【问题讨论】:
-
那么重点是什么?看起来您将使用同步原语来序列化您的多个进程。如果是这样,为什么要使用多个进程?
-
你能把你的例子更具体一些吗?
-
John Zwinck,Janne Karila,我在主要问题中添加了一些信息。
标签: python synchronization multiprocessing