Python多进程全局变量共享机制与进程通信方案解析

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

本文探讨Python多进程中主进程与子进程默认无法共享全局变量的机制,并详细解析实现数据共享的四种核心对象:Value、Array、Manager字典及列表。同时对比介绍进程间通信的两种常用方式,即用于单向通信的Queue和用于双向通信的Pipe,帮助开发者高效处理并发数据同步问题。

在多进程并发执行的环境中,主进程与子进程各自拥有独立的内存空间,因此默认情况下无法直接共享全局变量,这意味着子进程内的操作不会改变主进程中全局变量的值。若需在多进程间共享数据,可借助multiprocessing模块提供的特定对象:使用multiprocessing.Value("d",10.0)处理数值共享,通过multiprocessing.Array("i",[1,2,3,4,5])实现数组共享,利用multiprocessing.Manager().dict()创建共享字典,或采用multiprocessing.Manager().list(range(5))构建共享列表。此外,针对进程间传递数据的需求,可使用multiprocessing.Queue()进行单向通信,或通过multiprocessing.Pipe()实现双向通信。

import multiprocessing
import time
import os
 
datalist=['+++'] #全局变量,主进程与子进程是并发执行的,他们不能共享全局变量(子进程不能改变主进程中全局变量的值)
 
def adddata():
 global datalist
 datalist.append(1)
 datalist.append(2)
 datalist.append(3)
 print("子进程",os.getpid(),datalist)
 
 
if __name__=="__main__":
 
 p=multiprocessing.Process(target=adddata,args=())
 p.start()
 p.join()
 datalist.append("a")
 datalist.append("b")
 datalist.append("c")
 print("主进程",os.getpid(),datalist)

以上内容详细阐述了Python多进程中全局变量共享的限制及解决方案,旨在为读者提供实用的参考。希望上述关于数据共享对象与进程通信方式的介绍能对您的开发工作有所帮助,欢迎持续关注以获取更多技术分享。

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

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 算法库。