Python中如何使用多进程?multiprocessing模块详解

哎呀,你说的太详细了。
当使用多进程时,我并没有那么挑剔。
我记得有一年我在上海从事图像处理工作。
由于 CPU 的表现就像锅上的蚂蚁,我决定尝试多处理。

当时,我正在寻找一个随机多处理库,并直接使用Process来创建进程。
没有人排队什么的,所以我只想走得更快。
结果创建了大量进程,导致系统停止。
后来查了一下,发现需要添加 if __name__ == '__main__': 。
如果你不这样做,Windows 子进程会疯狂地导入模块,这真的会杀了你。

后来,我发现我可以简单地使用多个进程来执行 CPU 密集型任务,并为 I/O 密集型任务打开更多线程。
我从来没有使用过你提到的队列、管道或共享内存。
看起来太复杂了。
那时,您只需使用管道发送信号,让另一个进程知道它已完成。

我以前用过游泳池,但我觉得有点浪费。
您每次都必须创建和销毁该进程。
我们建议使用Process直接控制它。
但是,如果您的工作量非常大,那么使用 Pools 来分割任务并自动收集结果是非常容易的。

一般根据情况采用多进程、多线程。
不要做得太过分,保持简单有效。
我还没有完全实现你所说的,但似乎有道理。

Python I/O与进程的详细讲解

I/O操作的关键是文件管理。
使用with语句,文件会自动关闭,不用担心出错。

文件读取,多种模式。
要读取文本,请使用“r”;要写入文本,请使用“w”;要添加文本,请使用“A”。

读写内存时,StringIO和ByteIO来帮忙。
对于字符串,使用StringIO;对于字节,请使用 BytesIO。

操作系统交互,OS模块是万能的。
文件列表,listdir;文件存在,存在。

序列化,对象变成字节。
Pickles 和 Jason,帮助您实现这一目标。

进程管理、创建进程、os.fork()或多处理。
对于Unix系统,使用fork;对于一般用途,请使用多处理。

进程池,多任务并行,效率高。
池管理流程可在几分钟内完成工作。

进程通信、队列或管道。
生产者和消费者,信息传递无障碍。

线程处理,线程模块。
多线程提高效率。

线程同步,锁来帮忙。
避免竞争条件并确保您的数据安全。

Threadlocal,线程全局变量。
每个线程都有自己的变量。

分布式进程,Multiprocessing.Manager。
多机协作更高效。

总结,I/O和进程管理,Python的强大工具。
充分利用它们可以使您的程序更加高效。
你自己看看,还有什么不明白的吗?

Supervisor — 进程管理

这个东西叫Supervisor,是Python做的一个进程管理工具。
启动、重新启动和终止进程,以及自动监控和重新启动。
简单来说,就是让程序稳定运行。

主要特点: 1 .进程管理:普通命令行程序成为后台并监控状态。
2 .自动重启:如果进程出现问题,会自动重启。
3 . 多进程管理:同时管理多个进程。
4 、用户管理:设置非root用户管理流程。

实施步骤: 1 、安装。
2 . 生成配置文件。
3 .配置文件路径。
4 . 启动主管。

配置文件:
主要配置:全局设置。

子配置:具体的进程配置。

常用命令:
查看状态:supervisorctl status
启动:supervisorctl start [程序名称]
停止:supervisorctl stop [程序名称]
还有web管理界面,方便。
对于系统管理,您可以使用 systemctl。

总之,Supervisor非常实用,可以搞定流程管理。
你自己看看,用了就知道有多香了。