我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
除了将我的子类重写为函数之外,还有什么好的方法吗?