我正在编写一个多处理逻辑。同一段代码在我的本地环境中运行良好,同时在我的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容器中使多处理逻辑正常工作。