![]() |
1
56
允许在进程之间传输数据的多处理中的队列实现依赖于标准操作系统管道。
操作系统管道不是无限长的,因此在操作系统中排队数据的进程可能会被阻塞
对于少量数据,如示例中的数据,主进程可以
但它肯定会与大量数据决裂。子流程将在中被阻止
下面是一个用户有 this exact issue 我在那里的答案中发布了一些代码,帮助他解决了问题。 |
![]() |
2
7
不要打电话
我使用了以下解决方法,允许进程在处理所有结果之前退出:
它可以缩短,但我留了更长的时间,以便新手更清楚。
在这里
问题是,接收消息的队列管道的输入缓冲区可能已满,导致写入器无限阻塞,直到有足够的空间接收下一条消息。因此,有三种方法可以避免阻塞:
|