我嘗試apply_async到共用的反傳給任務多,但它不能與這樣的錯誤「RuntimeError:同步的對象只能進程之間通過繼承共享」。這是怎麼回事Python的多apply_async +價值
def processLine(lines, counter, mutex):
pass
counter = multiprocessing.Value('i', 0)
mutex = multiprocessing.Lock()
pool = Pool(processes = 8)
lines = []
for line in inputStream:
lines.append(line)
if len(lines) >= 5000:
#don't queue more than 1'000'000 lines
while counter.value > 1000000:
time.sleep(0.05)
mutex.acquire()
counter.value += len(lines)
mutex.release()
pool.apply_async(processLine, args=(lines, counter,), callback = collectResults)
lines = []
我明白,這是一些最起碼的片段,但我擔心的是你的回調函數沒有做你的期望。由於'processLine'沒有返回值,所以你真的不應該調用'len(result)',因爲它沒有意義。如果你要回答你自己的問題,你應該保持完全獨立。 – Hooked