为什么Queue.Queue
有task_done
方法而multiprocessing.Queue
没有这种方法?
答案 0 :(得分:3)
我认为你需要JoinableQueue。
答案 1 :(得分:2)
我的猜测是:multithreading
模块很早就实现了,multiprocessing
模块有2.6版本。
multiprocessing
稍微更正了队列设计,并提供了比multithreading
更好的灵活性,因为您可以在Queue
,SimpleQueue
和JoinableQueue
之间进行选择。在您的使用案例(速度与可靠性)。
现在像这样修改multithreading
会导致向后不兼容,因为必须删除join
和task_done
方法。想象一下,需要重构的代码,必须编写新的测试,API被破坏 - 对我来说显然没有任何好处。