gpt4 book ai didi

python - 为什么 multiprocessing.Queue 有一个小的延迟,而(显然)multiprocessing.Pipe 却没有?

转载 作者:行者123 更新时间:2023-12-01 08:23:19 26 4
gpt4 key购买 nike

multiprocessing.Queue 的文档指出从项目入队到其腌制表示刷新到底层管道之间存在一点延迟。显然,您可以将一个项目直接放入管道中(它没有说明其他情况,并且暗示情况就是如此)。

为什么管道不需要或没有相同的后台线程来进行酸洗?这是否与与 multiprocessor.SyncManager.Queue 通信时没有类似延迟的原因相同?

(额外问题:当文档说“将对象放入空队列后,可能会出现无限小延迟......”时,它是什么意思?我学过微积分;我知道infinitesimal 是什么意思,这个意思似乎不适合这里。那么它在说什么?)

最佳答案

如果写入Pipe当前线程将阻塞,直到写入完成。因此没有延迟(或者更确切地说,调用线程无法观察到任何延迟),但有可能死锁Pipe 是比 Queue 更低级别的工具。

SyncManager.Queue 的情况很简单,对管理器的所有请求都是同步的,这样推送对象的进程就无法观察到它仍然是空的(没有弹出)。

同时,“无穷小”延迟仅意味着线程调度延迟,而不是写入整个对象(可能更大)的时间:它足以开始,以便确定队列不为空。尽管如此,推送线程仍然可以赢得比赛,并观察到它仍然缺少“已推送”对象。

关于python - 为什么 multiprocessing.Queue 有一个小的延迟,而(显然)multiprocessing.Pipe 却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54474511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com