正确使用queue.LifoQueue与multiprocessing.Process

时间:2018-06-03 09:25:46

标签: python python-3.x python-multiprocessing

是否可以将queue.LifoQueue()multiprocessing.Process()一起使用(或者multiprocessing.Pool

from queue import LifoQueue
from multiprocessing import Process
from functools import partial

x = LifoQueue()

for i in range(100):
    x.put(i % 4)

# f = partial(x.get, block=True) # tried with both block=True and block=False

Process(target=x.get).start() # also tried get_nowait

然而,这会引发错误:TypeError: can't pickle _thread.lock objectsx.get()x.get_nowait()本身就可以正常工作。这SO answer on "How to use multiprocessing queue in Python?"似乎很有趣,但似乎不适用于LifoQueue。奇怪的是,当从终端运行时,错误是不同的EOFError: Ran out of input(之后LifoQueue实例中仍然包含元素)。我尝试使用multiprocessing.Pool,但也无法使用它。

环境,如果重要的话:在Windows 10上通过Anaconda发行版安装Python 3.6.3。

有没有办法同时使用这两种?

0 个答案:

没有答案