我multiprocessing在 Windows 上的 Python 2.7 上使用该模块,并且我有多个进程将数据放入共享队列并从共享队列中取出数据。我正在创建子类multiprocessing.Process来执行此操作,并将由 amultiprocessing.Manager()作为参数生成的队列代理传递给__init__. 在关于 SO 的其他答案中,我看到人们将此队列代理map_async作为参数传递,但是当我尝试将它作为__init__方法的参数提供时,我得到了错误:
TypeError: Pickling an AuthenticationString object is disallowed for security reasons
所以我知道在 Windows 上,您传递给实例化子Process类的东西必须是可腌制的,并且这些共享对象上需要有一个 authkey(这可以防止腌制)。但是为什么你可以给那个队列代理map_async而不是一个Process子类呢?Process除了将我的子类重写为函数之外,还有什么好的方法吗?