如何确保子进程在调用join()之前完成将数据复制到共享内存中?

时间:2019-06-28 20:19:16

标签: python memory-leaks multiprocessing fork shared-memory

我正在使用multiprocessing.Process加载一些图像并将它们存储在共享内存中,如here所述。问题是,有时由于完全随机时间的巨大内存高峰,我的代码崩溃了。我只是想知道可能是什么原因造成的:在join()之前,该进程没有足够的时间将图像的内容复制到RAM的共享内存中。为了检验我的假设,我在每个进程上执行了time.sleep(0.015)之后添加了join(),这已经使内存峰值的数量减少了大约90%或更多。但是,我仍然不确定100%是否会经常出现内存峰值,因为那很少的时间可以帮助数据完全转移到共享内存中。

所以我想知道,有没有一种方法可以确保子进程在调用.join()之前已经完成了将数据复制到内存的工作?我不想在拨打time.sleep()时使用固定号码。知道何时将数据完全传输到共享内存,然后执行join()

0 个答案:

没有答案