有谁熟悉如何在python中实现多处理优先级队列?
唉,它就像改变旧的排队规则一样简单Queue.Queue
:后者实际上是根据模板方法模式设计的子类,并且只覆盖钩子方法_put
和/或_get
可以轻松地允许改变排队规则(在2.6提供了显式LIFO和优先级实现,但即使在早期版本的Python中也很容易实现.
对于多处理,在一般情况下(多个读取器,多个写入器),我看不到如何实现优先级队列的解决方案,除了放弃队列的分布式性质; 指定一个特殊的辅助进程,它只处理队列,向它发送(基本上)RPC以创建具有指定规则的队列,执行put和get,获取有关它的信息,&c.因此,人们会遇到通常的问题,即确保每个进程都知道辅助进程的位置(主机和端口,等等)(如果进程总是在主进程启动时生成,则会更容易).一个非常大的问题,特别是如果一个人希望以良好的性能做到这一点,可以防止aux proc的崩溃(需要将数据复制到从属进程,如果主机崩溃,则在奴隶之间分配"主选举",等等).从头开始这样做听起来像博士的工作.一个人可能从约翰逊的工作开始,或者捎带一些非常通用的方法,比如ActiveMQ.
一些特殊情况(例如单个阅读器,单个写入器)可能更容易,并且对于其有限的应用领域变得更快; 但是应该为该有限区域制定一个非常明确的限制规范 - 结果不会构成(通用)"多处理队列",但只适用于给定的约束要求集.