编程语言
首页 > 编程语言> > python – 多处理队列maxsize限制是32767

python – 多处理队列maxsize限制是32767

作者:互联网

我正在尝试使用多处理编写Python 2.6(OSX)程序,并且我想填充一个超过默认值32767项的Queue.

from multiprocessing import Queue
Queue(2**15) # raises OSError

队列(32767)工作正常,但任何更高的数字(例如队列(32768))失败并出现OSError:[Errno 22]参数无效

这个问题有解决方法吗?

解决方法:

一种方法是使用自定义类包装multiprocessing.Queue(仅在生产者方面,或从消费者角度透明地).使用它,您可以将要分派的项目排队到您正在包装的Queue对象,并且只在空间可用时将来自本地队列(Python list()对象)的内容提供到multiprocess.Queue中,并对异常处理进行限制当队列满了.

这可能是最简单的方法,因为它应该对代码的其余部分产生最小的影响.自定义类应该像Queue一样,同时隐藏抽象背后的底层multiprocessing.Queue.

(一种方法可能是让你的生产者使用线程,一个线程来管理从线程队列到你的multiprocessing.Queue的调度以及实际只是为线程队列提供的任何其他线程).

标签:python,multiprocessing,queue,max-size
来源: https://codeday.me/bug/20190927/1822356.html