我正在尝试使用多处理来处理大量文本。
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)
然后我使用multiprocessing.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)]