Python多进程multiprocessing模块详解与通信示例

Ivy
Ivy
发布时间:2026-10-13| 5人浏览过
原创

本文详解Python中multiprocessing模块的用法,涵盖进程创建、同步、池管理及数据共享四大核心部分。通过具体代码示例演示如何启动子进程及利用Queue实现进程间数据通信,强调进程状态独立性及通过序列化机制共享数据的原理,帮助开发者掌握多进程编程基础。

multiprocessing模块概述与核心分类

严格来说,multiprocessing并非一个独立的模块,而是Python标准库中用于操作和管理进程的包。其名称中的“multi”意指多功能,该包几乎囊括了与进程相关的所有子模块。鉴于提供的子模块众多,为便于记忆与分类,可将其大致划分为四个部分:创建进程、进程同步、进程池以及进程间数据共享。需要重点强调的是,进程之间不存在共享状态,进程对数据的修改仅限于其内部;然而,借助特定的机制与方法,可以实现进程间的数据共享。

多进程基本语法与通信示例

基于此前对多线程使用及线程间Queue的理解,多进程及其通信机制便易于掌握。下文将展示多进程的基本语法及进程间通信的简单示例。


#多进程基本语法
import multiprocessing, time, os

def process_test():
  time.sleep(3)
  print("my multiprocessing test")
  print("my pprocess id is",os.getppid())
  print("my process id is",os.getpid())

if __name__ == '__main__': #多线程必须写在if __name__后面,为什么???
  process = multiprocessing.Process(target=process_test) #启动子进程
  process.start()

#多进程间数据通信,多进程的queue实际上是python将一个queue序列化后再反序列化给其它进程
#定义一个函数,第一个形参传递一个进程queue
def m_queue_test(Queue, name):
  Queue.put(("multiprocess queue test",name)) #put一次只能传递一个数据对象,多个对象必须使用列表 元组 字典等传递

if __name__ == '__main__':
  q = multiprocessing.Queue() #主进程实例化一个进程queue
  process2 = multiprocessing.Process(target=m_queue_test, args=(q, "zsq")) #将q传递给子进程,由子进程往里面传递数据
  process2.start()
  print(q.get())#主进程从queue里面读数据

总结

以上即为本文的全部内容,希望对读者的学习有所助益,同时也欢迎大家继续支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。