下面是一些玩具示例,用于重现我在 Python 3.5 上使用 pathos.multiprocessing 时遇到的问题。一个问题是并行过程无法识别是什么Test
,即使Test
没有在test()
. 我已经看到一些帖子解决了第二个问题,说我需要一个import numpy as np
内部test
函数,但这对我不起作用。
import numpy as np
from enum import Enum
from pathos.multiprocessing import ProcessingPool
class TestEnum(Enum):
A = 1
B = 2
def test(x):
if x >= 0:
return np.array(TestEnum.A)
else:
return np.array(TestEnum.B)
def main():
inputs = np.arange(100)
pool = ProcessingPool()
outputs = pool.map(test, inputs)
我得到的错误是:_pickle.PicklingError: Can't pickle <enum 'TestEnum'>: it's not found as builtins.TestEnum
如果我要摆脱所有出现的TestEnum
,那么下一个错误将np
是无法识别。我在该站点上看到其他帖子表明import numpy as np
在顶部需要an main()
,但这对我不起作用。当我尝试在其中导入模块时遇到的错误main()
是:ImportError: __import__ not found