hab*_*edi 7 python multiprocessing python-multiprocessing
我有一个函数,它将图形的节点id作为输入并在图形中计算某些东西(不改变图形对象),然后将结果保存在文件系统中,我的代码如下所示:
...
# graph file is being loaded
g = loadGraph(gfile='data/graph.txt')
# list of nodeids is being loaded
nodeids = loadSeeds(sfile='data/seeds.txt')
import multiprocessing as mp
# parallel part of the code
print ("entering the parallel part ..")
num_workers = mp.cpu_count() # 4 on my machine
p = mp.Pool(num_workers)
# _myParallelFunction(nodeid) {calculate something for nodeid in g and save it into a file}
p.map(_myParallelFunction, nodeids)
p.close()
...
Run Code Online (Sandbox Code Playgroud)
问题是当我将图形加载到Python中时需要大量内存(大约2G,它实际上是一个包含数千个节点的大图),但是当它开始进入代码的并行部分时(并行映射函数执行)似乎每个进程都有一个单独的g副本,我只是在我的机器上耗尽了内存(它有6G内存和3G交换),所以我想看到有一种方法可以为每个进程提供相同的副本g这样只需要存储器来容纳它的一个副本吗?任何建议都表示赞赏,并提前感谢.