最佳答案
我尝试使用一个部分函数,以便 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.
我在这里遗漏了什么? 我如何在子进程之间共享锁?