我正在尝试设置一个链接工作池的系统,如下所示:
╭────────╮ ╭─────────╮ ╭─────────╮
│ ├──> Worker 1 ───> │ ├──> Worker 3 ───> │ │
│ Data ├──> Worker 1 ───> │ Queue ├──> Worker 3 ───> │ Queue ├───> Output
│ ├──> Worker 1 ───> │ ├──> Worker 3 ───> │ │
╰────────╯ ╰─────────╯ ╰─────────╯
╭────────╮ ^ ^ ^
│ ├──> Worker 2 ────────┘ │ │
│ Data ├──> Worker 2 ──────────┘ │
│ ├──> Worker 2 ────────────┘
╰────────╯ 在我推出自己的通用解决方案之前,是否有任何现成的库(或干净的multiprocessing / threading示例)可供我使用?我不确定这种设置该叫什么,所以我在谷歌上搜索并没有给出多少有用的结果。
任何建议都很感谢!
发布于 2013-01-19 20:42:10
ZeroMQ是一个轻量级的解决方案,具有Python绑定。http://www.zeromq.org/bindings:python
发布于 2013-01-19 21:07:01
我以前看过Beanstalkd,它在处理多处理器是生产者和/或消费者的工作队列方面很棒,省去了对线程的担忧。
在beanstalkc上有一个Python客户端
从他们的wiki中获取的例子。
>>> import beanstalkc
>>> beanstalk = beanstalkc.Connection(host='localhost', port=14711)
>>> beanstalk.put('hey!')
1
>>> job = beanstalk.reserve()
>>> job.body
'hey!'
>>> job.delete()这可能会满足您的需求- IIRC您还可以拥有持久队列。
https://stackoverflow.com/questions/14414419
复制相似问题