multiprocessing.queue 是接近FIFO的,本身不带有LIFO的实现。如果想要实现LIFO,这里列出目前我能想到的方法。
如果大家有更好的方法,欢迎指教。
两种思路:
1,入 mp.queue 队之前先对之前放在队中的元素进行出队操作,这样每次队中只放一个元素 (每次队列中只存放最新的那一个元素,算是部分实现了LIFO)
2,出 mp.queue 队之后进入queue.LifoQueue 队。两个队列共同实现一个LIFO的效果。
3,用basemanager warp实现:https://stackoverflow.com/questions/33691392/how-to-implement-lifo-for-multiprocessing-queue-in-python
LIFO反序输出只能对当前队列中已存在的元素序列进行。不能保证对所有输入来说,输出都是反序的。
因为反序输出发生的时候,后续还有元素没有输入进来,所以就不可能对那些元素也反序了。