WYS*_*WYG 4 python memory-management multiprocessing
我正在使用python对某些数据集进行一些分析,并且此过程会生成庞大的列表/词典,这些列表/词典最多会消耗多达30%top
的RAM(如所报道)(24GB)。大约有400个此类数据文件,每个文件都必须进行处理。因此,我一次不能运行两个以上的作业(否则我的系统挂起)。完成每个文件的分析需要几分钟,而整个数据需要将近两天。
唯一的解决方案是使用并行处理并实现它,我需要创建将执行任务的函数。
第一步保持不变-打开文件,读取,拆分并存储为列表。通常,我在列表上进行分析-获取另一个列表,然后删除前一个列表以节省内存。但是,如果使用多重处理,则必须将此列表作为参数传递给某些函数。
global
成为可能吗?例:
# OPEN FILE #
f=open(args.infile,'r')
a=f.read()
f.close()
mall=findall('[^%]+',a)
del a
lm=len(mall)
m=[]
for i in range(args.numcores):
if i<args.numcores-1:
m[i]=mall[i*args.numcores:(i+1)*args.numcores]
else:
m[i]=mall[i*args.numcores:lm]
del mall
Run Code Online (Sandbox Code Playgroud)
然后将其传递给函数 fun(<list>)
在这种情况下,对于每个过程: fun(m[i])