【发布时间】:2014-10-22 20:10:06
【问题描述】:
我正在尝试使用部分函数,以便 pool.map() 可以针对具有多个参数的函数(在本例中为 Lock() 对象)。
这里是示例代码(取自我上一个问题的答案):
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.
我在这里缺少什么?如何在我的子进程之间共享锁?
【问题讨论】:
-
关于同一个问题还有另一个问题,尽管他们的具体错误不同 - Trouble using a lock with multiprocessing.Pool: pickling error
标签: python locking multiprocessing share