gpt4 book ai didi

python - 在 Python 中使用多处理时如何节省内存?

转载 作者:太空狗 更新时间:2023-10-29 21:56:51 24 4
gpt4 key购买 nike

我有一个函数将图形的节点 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()
...

问题是当我将图加载到 Python 中时它需要大量内存(大约 2G,它实际上是一个有数千个节点的大图),但是当它开始进入代码的并行部分时(并行映射函数执行)似乎每个进程都有一个单独的 g 副本,我只是用完了我机器上的内存(它有 6G ram 和 3G 交换空间),所以我想看看有没有办法给每个进程g 的相同副本,以便只需要保存它的一份副本的内存?任何建议表示赞赏,并在此先感谢。

最佳答案

如果将图表分成更小的部分不起作用,您可以使用 this 找到解决方案或 multiprocessing.sharedctypes ,这取决于您的图表是哪种对象。

关于python - 在 Python 中使用多处理时如何节省内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30538257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com