使用Python的multiprocessing模块
Python标准库中提供了multiprocessing模块,它可以方便地实现多进程并发编程。
创建进程
使用multiprocessing模块创建进程的方式有两种:
- 使用Process类创建进程
- 使用Pool类创建进程池
使用Process类创建进程
使用Process类创建进程的步骤如下:
- 导入multiprocessing模块
- 创建Process对象,传入target参数指定进程要执行的函数
- 调用Process对象的start()方法启动进程
- 调用Process对象的join()方法等待进程执行结束
示例代码如下:
python
import multiprocessing
def worker():
print('worker')
if __name__ == '__main__':
p = multiprocessing.Process(target=worker)
p.start()
p.join()
使用Pool类创建进程池
使用Pool类创建进程池的步骤如下:
- 导入multiprocessing模块
- 创建Pool对象,传入processes参数指定进程池中进程的数量
- 调用Pool对象的map()方法并传入要执行的函数和参数列表,开始执行多进程任务
- 调用Pool对象的close()方法关闭进程池
- 调用Pool对象的join()方法等待所有进程执行结束
示例代码如下:
python
import multiprocessing
def worker(num):
print('worker %d' % num)
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=4)
pool.map(worker, [1, 2, 3, 4])
pool.close()
pool.join()
注意事项
在使用多进程编程时,需要注意以下几点:
- 在Windows平台下,必须将代码放在if __name__ == '__main__':语句块中,否则会报错。
- 在多进程编程中,每个进程都有自己的内存空间,因此如果要共享数据,需要使用multiprocessing模块提供的Queue、Pipe等数据结构。
- 多进程编程中,每个进程都有自己的标准输入、输出和错误输出,因此在输出时需要使用multiprocessing模块提供的日志记录功能。
2023-04-28 00:57:34 更新