【发布时间】:2011-06-02 07:24:03
【问题描述】:
我想了解在 Python 中的两个进程之间共享队列(资源)所遵循的最佳实践。以下是每个进程正在执行的操作:
Process_1:不断从流式API获取数据(json格式)
Process_2: 是一个守护进程(类似于 Sander Marechal 的 code),它将数据(一次一个)提交到数据库中
因此,Process_1(或 Producer)将一个数据单元放到该共享资源上,Process_2(或 Consumer)将轮询该共享资源以查找任何新的数据单元。数据,并将它们存储在数据库中(如果有)。
我想到了一些选项:
- 使用pickle(缺点:酸洗和去酸洗的额外开销)
- 通过 Process_1 的
stdout传递数据 到 Process_2 的stdin(缺点:无,但不确定如何使用守护进程来实现) - 使用
multiprocessing库中的pool对象(缺点:不确定如何将其编码为一个进程是一个守护进程)
我想要一个在这方面实践的最佳解决方案,带有一些代码:)。谢谢。
【问题讨论】:
标签: python producer-consumer shared-resource