【发布时间】:2021-07-12 07:03:10
【问题描述】:
这个问题是关于我的计算机操作系统管道呈现的 Python 多处理和 Python 多处理队列缓冲区限制。基本上,我达到了 Python 多处理队列缓冲区的限制。
这是我到目前为止的简单实现
import os
from multiprocessing import Queue,Lock,Manager
def threaded_results(q,*args):
"""do something"""
q.put(*args)
def main():
manager = Manager()
return_dict = manager.dict()
cpu = os.cpu_count()
q = Queue()
processes = []
for i in range(cpu):
p = Process(target=threaded_results,args=(q,*args))
processes.append(p)
p.start()
for p in processes:
p.join()
results = [q.get() for proc in processes]
我读到我必须先清空队列,然后再添加回由某种称为信号量的东西编排的队列。我正在考虑使用我自己定义的数据结构或重构我的代码设计。问题是,是否有任何传统的解决方案可以绕过操作系统级别的队列缓冲区限制,以便使用 Python 将内容存储在缓存内存中?如何在多处理队列满时“获取”多处理队列并继续多处理?
【问题讨论】:
标签: queue python-multiprocessing deadlock semaphore