Python多处理保存文件



我正在计算整个南极洲的各种参数。代码太长了,所以我决定把南极洲分成8个独立的比特,并并行运行这些独立比特的代码。在每个文件的末尾,我都会得到一本字典"I",我想保存它。

"功能文件"如下:


I = {}
def function()
... code to compute variables ...
PKL_paths_save = 'path'
file_save = 'file_name' + change_name
f = open(PKL_paths_save + file_save, "wb")
pickle.dump(D, f)
f.close()

多处理文件如下所示:

import pandas as pd
import pickle
import numpy as np
import multiprocessing
from 'function file' import function
file = 'file_name'
PKL_paths = 'path'
D = pd.read_pickle(PKL_paths + file)
S = range(0,361, 45)
if __name__ == '__main__':
a = multiprocessing.Process(target=function, args=(S[0], S[1], 1))
b = multiprocessing.Process(target=function, args=(S[1], S[2], 2))
c = multiprocessing.Process(target=function, args=(S[2], S[3], 3))
d = multiprocessing.Process(target=function, args=(S[3], S[4], 4))
e = multiprocessing.Process(target=function, args=(S[4], S[5], 5))
f = multiprocessing.Process(target=function, args=(S[5], S[6], 6))
g = multiprocessing.Process(target=function, args=(S[6], S[7], 7))
h = multiprocessing.Process(target=function, args=(S[7], S[8], 8))

i = multiprocessing.Process(target=function, args=(S[0], S[1], 1))
j = multiprocessing.Process(target=function, args=(S[1], S[2], 2))
k = multiprocessing.Process(target=function, args=(S[2], S[3], 3))
l = multiprocessing.Process(target=function, args=(S[3], S[4], 4))
m = multiprocessing.Process(target=function, args=(S[4], S[5], 5))
n = multiprocessing.Process(target=function, args=(S[5], S[6], 6))
o = multiprocessing.Process(target=function, args=(S[6], S[7], 7))
p = multiprocessing.Process(target=function, args=(S[7], S[8], 8))
a.start()
b.start()
c.start()
d.start()
e.start()
f.start()
g.start()
h.start()
i.start()
j.start()
k.start()
l.start()
m.start()
n.start()
o.start()
p.start()
a.join()
b.join()
c.join()
d.join()
e.join()
f.join()
g.join()
h.join()
i.join()
j.join()
k.join()
l.join()
m.join()
n.join()
o.join()
p.join()
print(a)

因此,基本上,南极洲的每一个地方都同时发生8个"功能文件"过程。但当我们到达文件的末尾时,我遇到了一个内存错误,我想这是因为它试图同时保存8个文件。

这个问题有解决办法吗?有没有一种方法可以并行运行代码,但将结果串行保存(一个接一个(?或者有没有办法将南极洲所有8个部分的词典(I(组合成一个词典,并保存在一个文件中?

如有任何帮助,我们将不胜感激。

请注意,S列表指的是南极洲的经度,以及它们是如何被划分为南极洲的各个部分的。"args"中的第三个变量是change_name变量,因此它们被保存到不同的文件中。

编辑:

这是错误的屏幕截图。同位素和同位素nf是从函数文件导入的函数。

我现在只使用joblib而不是pickle就遇到了这个问题。

相关内容

  • 没有找到相关文章

最新更新