如何使python多处理池内存高效?
我正在尝试用多重处理来处理大量文本如何使python多处理池内存高效?,python,linux,python-3.x,memory,multiprocessing,Python,Linux,Python 3.x,Memory,Multiprocessing,我正在尝试用多重处理来处理大量文本 import pandas as pd from multiprocessing import Pool from itertools import repeat # ...import data... type(train) type(train[0]) 输出: pandas.core.series.Series str 我需要导入一个非常大的文件(1.2GB)以用于我的功能。它存储在名为Gmodel的对象中 我的函数接受4个参数,其中一个是类似于G
import pandas as pd
from multiprocessing import Pool
from itertools import repeat
# ...import data...
type(train)
type(train[0])
输出:
pandas.core.series.Series
str
我需要导入一个非常大的文件(1.2GB)以用于我的功能。它存储在名为Gmodel
的对象中
我的函数接受4个参数,其中一个是类似于Gmodel
的对象:
my_func(text,model=Gmodel,param2,param3)
然后我使用多处理.Pool
函数:
from functools import partial
# make the multi-parameter function suitable for map
# which takes in single-parameter functions
partial_my_func= partial(my_func, model=Gmodel, param2=100, param3=True)
if __name__ == '__main__':
p = Pool(processes = 10, maxtasksperchild = 200)
train_out = p.map(partial_my_func, train)
当我运行最后3行并在终端中执行htop
时,我看到几个进程的VIRT
和RES
超过20G。我使用的是共享服务器,不允许我使用这么多内存。我有没有办法减少内存使用
系统信息:
3.6.0 |Anaconda 4.3.1 (64-bit)| (default, Dec 23 2016, 12:22:00)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
您能详细介绍一下文本处理吗?您可以尝试使用multiprocess.Manager和multiprocess.Process