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