无法使用Python Pathos多处理的泡菜对象和导入模块



以下是一些玩具示例,以重现我对python 3.5上的多次处理。一个问题是,即使在test()中未使用Test,并行过程也无法识别Test是什么。我看过一些帖子,解决了第二期,说我需要import numpy as nptest功能中,但这对我不起作用。

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无法识别。我在此网站上看到了其他帖子,建议在main()的顶部需要import numpy as np,但这对我不起作用。我尝试在main()内导入模块时遇到的错误是:ImportError: __import__ not found

问题:如果我添加一个入口点并通过IT调用Main((工作

multiprocessing

是必不可少的

python»3.6文档部分:主模块的安全导入

主模块的安全导入
确保主模块可以由新的Python解释器安全地导入,而不会引起意外的副作用(例如开始新的过程(。

应该使用if __name__ == '__main__':

保护程序的"入口点"

相关内容

  • 没有找到相关文章

最新更新