Python 多进程详解:Process 类实战
在 Python 中处理 CPU 密集型任务时,单线程往往受限于 GIL(全局解释器锁),此时引入多进程是更优解。multiprocessing 模块提供了类似线程的接口,但真正运行的是独立的操作系统进程。
创建进程
最基础的用法是通过 Process 类实例化一个进程对象。我们需要定义一个目标函数,并指定其参数。
import os
from multiprocessing import Process
def info(title):
print(title)
print('module name:', __name__)
if hasattr(os, 'getppid'):
print('parent process:', os.getppid())
print('process id:', os.getpid())
def f(name):
info('function f')
print('hello', name)
if __name__ == '__main__':
info('main line')
p = Process(target=f, args=('bob',))
p.start()
p.join()
注意几个关键点:
- 入口保护:在 Windows 系统上,启动新进程时会重新导入脚本,因此必须将启动代码放在
if __name__ == '__main__':块中,防止无限递归创建进程。 - 进程状态:
start()方法启动进程,join()方法阻塞主进程直到子进程结束,确保程序逻辑顺序正确。 - 环境差异:Unix 系统支持获取父进程 ID,Windows 则不支持该属性,代码中做了兼容处理。
这种模式适合需要独立内存空间、避免数据竞争的场景。后续可以进一步探索进程池 Pool 来管理更多并发任务。

