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