python2.7 multiprocessing无法在docker中进行酸洗,但在本地可以正常工作

时间:2019-06-05 10:06:09

标签: python-2.7 docker ubuntu

我正在编写一个多处理逻辑。同一段代码在我的本地环境中运行良好,同时在我的ubuntu16.04 Docker容器中引发了异常'cPickle.PicklingError:Cant pickle:attribute lookup builtin .function failed'。

我的本​​地环境是miniconda python2.7.12 env。 已安装ubuntu:16.04映像和python-dev的Docker容器。

与以下代码相同:

from pathos.multiprocessing import ProcessPool as Pool
# from multiprocessing import Pool
from functools import partial


class PreProcessor():

    def __init__(self):
        content_list = range(6)
        mock_predict_field_partial = partial(self.mock_preprocess, 'output')

        pool = Pool(4)
        features = pool.map(mock_predict_field_partial, content_list)
        print(features)


    @staticmethod
    def mock_preprocess(_output_dir, content):
        return 'hello {}'.format(content)


if __name__ == '__main__':
    PreProcessor()

Docker容器使用以下命令安装所有内容:

apt-get update
apt-get install -y build-essential
apt-get install -y python-dev
apt-get install -y curl
apt-get install -y git
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py
pip install pathos

我想知道如何在Docker容器中使多处理逻辑正常工作。

0 个答案:

没有答案