我正在嘗試使用部分函數,以便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