如何使python多处理池内存高效?

时间:2017-04-18 03:01:01

标签: 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个参数,其中一个是像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时,我看到多个进程VIRTRES超过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)]

0 个答案:

没有答案