我正在尝试使用部分函数,以便pool.map()可以针对具有多个参数(在本例中为Lock()对象)的函数。Python共享进程之间的锁
下面是示例代码(从答案带到我的前面的问题):
from functools import partial
def target(lock, iterable_item):
for item in items:
# Do cool stuff
if (... some condition here ...):
lock.acquire()
# Write to stdout or logfile, etc.
lock.release()
def main():
iterable = [1, 2, 3, 4, 5]
pool = multiprocessing.Pool()
l = multiprocessing.Lock()
func = partial(target, l)
pool.map(func, iterable)
pool.close()
pool.join()
然而,当我运行此代码,我得到的错误:
Runtime Error: Lock objects should only be shared between processes through inheritance.
我是什么在这里失踪?我怎样才能分享我的子流程之间的锁?
还有关于同样的问题的另一个问题,虽然他们的具体错误是不同的 - [使用多处理.Pool:酸洗错误锁定问题](http://stackoverflow.com/questions/17960296/trouble-usinga-a-锁 - 多处理 - 池 - 酸洗 - 错误) – 2014-08-28 21:03:32