我需要编写一个非常具体的数据处理守护进程。
以下是我认为它可以用于多处理的方法:
流程#1:获取一些重要元数据的一个过程,它们可以每秒获取一次,但这些数据必须在流程#2中可用。进程#1写入数据,进程#2读取数据。
流程#2:两个流程将根据流程#1中收到的内容获取实际数据。提取的数据将存储到(大)队列中以便“稍后”处理
进程#3:两个(或更多)进程轮询在进程#2中创建的队列并处理这些数据。完成后,将填充新队列以在Process#4
进程#4:两个进程将读取由进程#3填充的队列,并通过HTTP发回结果。
所有这些不同流程背后的理念是尽可能地将它们专门化并使它们尽可能独立。
所有thoses进程都将被包装到一个主守护进程中,该守护进程在此处实现:
我想知道我所想象的是否相关/愚蠢/过度/等等,特别是如果我在守护进程的主要父进程中运行守护进程multiprocessing.Process
(es)。
此外,我有点担心潜在的锁定问题。在理论上,读取和写入数据的过程使用不同的变量/结构,以避免一些问题,但我仍然担心。
对我的上下文使用多处理可能不是正确的做法。我很想得到你的反馈。
注意:
提前感谢您的反馈。
答案 0 :(得分:0)
一般来说,你在不同工作中与不同任务的分工以及你让他们沟通的计划看起来都很好。但是,您应该注意的一件事是每当处理步骤是I / O或CPU绑定时。如果您受I / O限制,我会尽可能地使用线程模块:应用程序的内存占用量将更小,线程之间的通信可以更高效,因为允许共享内存。仅当您需要额外的CPU功率时,才进行多处理。在您的系统中,您可以同时使用它们(看起来像进程3(或更多)将执行一些繁重的计算,而其他工作程序将主要是I / O绑定)。