繁体   English   中英

在Python 3中安排和管理多个进程的最佳方法是什么

[英]What's the Best Way to Schedule and Manage Multiple Processes in Python 3

我正在使用Python 3开发一个项目,该项目涉及从文本文件读取行,以某种方式处理这些行,然后将所述操作的结果写入另一个文本文件。 以串行方式实现该流程是微不足道的。

但是,连续运行每个步骤需要很长时间(我正在处理几百兆字节/几千兆字节大小的文本文件)。 我考虑过将流程分解为多个实际的系统流程。 基于推荐的最佳实践,我将使用Python的multiprocessing库。

理想情况下,应该只有一个Process可以读取和写入文本文件。 但是,操纵部分是我遇到问题的地方。

当“阅读器进程”从初始文本文件中读取一行时,会将其放入Queue 然后,“操作过程”从Queue那一行中拉出,做他们的事情,然后将结果放入另一个Queue ,然后由“编写器过程”接收并写入另一个文本文件。 就目前而言,操作过程只是检查“ reader Queue ”中是否有数据,如果有,它们get()Queue get()数据并做自己的事情。 但是,那些进程可能在读取器进程运行之前就已运行,从而导致程序停止运行。

在您看来,什么是“最佳方式”以这种方式调度进程,以便在读取器进程将数据放入Queue之前不会运行操纵进程,而对写入器进程进行反之亦然? 我考虑过触发自定义信号,但是我不确定这是否是最合适的方法。 任何帮助将不胜感激!

如果您是我,我将把文件分成易于处理的部分和计算密集型操作部分的工作分开了。 如果那是不可能的(例如,如果由于某些原因行不是独立的),那么无论如何您可能都必须执行纯串行实现。

一旦在单独的文件中有N个块,就可以为每个块启动N次串行操作脚本。 然后,将输出合并回一个文件。 如果以这种方式执行此操作,则无需排队,您将节省一些工作。

您正在描述任务队列。 芹菜是一个任务队列: http : //www.celeryproject.org/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM