小编Dav*_*cht的帖子

ProcessPoolExecutor和Python中的锁定

我正在尝试使用concurrent.futures.ProcessPoolExecutorLocks,但是我遇到了运行时错误.(如果相关,我正在使用Windows)

这是我的代码:

import multiprocessing
from concurrent.futures import ProcessPoolExecutor

import time


def f(i, lock):
    with lock:
        print(i, 'hello')
        time.sleep(1)
        print(i, 'world')


def main():
    lock = multiprocessing.Lock()
    pool = ProcessPoolExecutor()
    futures = [pool.submit(f, num, lock) for num in range(3)]
    for future in futures:
        future.result()


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

    Traceback (most recent call last):
  File "F:\WinPython-64bit-3.4.3.2\python-3.4.3.amd64\Lib\multiprocessing\queues.py", line 242, in _feed
    obj = ForkingPickler.dumps(obj)
  File "F:\WinPython-64bit-3.4.3.2\python-3.4.3.amd64\Lib\multiprocessing\reduction.py", line 50, in dumps
    cls(buf, protocol).dump(obj)
  File "F:\WinPython-64bit-3.4.3.2\python-3.4.3.amd64\Lib\multiprocessing\synchronize.py", line 102, in __getstate__
    context.assert_spawning(self)
  File …
Run Code Online (Sandbox Code Playgroud)

python concurrency locking pool multiprocessing

9
推荐指数
1
解决办法
4092
查看次数

标签 统计

concurrency ×1

locking ×1

multiprocessing ×1

pool ×1

python ×1