当前位置: 首页 > article >正文

【Python】multiprocessing - 进程隔离

在 Python 的 multiprocessing 模块中,每个进程都有自己的内存空间,因此进程之间的数据不会共享。这意味着每个进程对全局变量的修改不会影响其他进程。

代码结构

from multiprocessing import Process

nums = [11, 22]

def run_p1():
    for i in range(4):
        nums.append(i)

def run_p2():
    for i in range(4):
        nums.append(i)
    print(nums)

if __name__ == '__main__':
    p1 = Process(target=run_p1)
    p2 = Process(target=run_p2)
    p1.start()
    p1.join()
    p2.start()
    p2.join()

详细步骤

  1. 全局变量 nums:
    • nums 是一个全局列表,初始值为 [11, 22]。
  2. 定义 run_p1 函数:
    • run_p1 函数在 nums 列表中追加 0, 1, 2, 3。
  3. 定义 run_p2 函数:
    • run_p2 函数在 nums 列表中追加 0, 1, 2, 3,然后打印 nums。
  4. 创建和启动进程:
    • p1 进程调用 run_p1 函数。
    • p2 进程调用 run_p2 函数。

进程的行为

  1. p1 进程:
    • 在 p1 进程中,nums 被修改为 [11, 22, 0, 1, 2, 3]。
    • 但是,这个修改只影响 p1 进程的内存空间,不会影响主进程或其他进程。
  2. p2 进程:
    • 在 p2 进程中,nums 被修改为 [11, 22, 0, 1, 2, 3]。
    • 但是,这个修改只影响 p2 进程的内存空间,不会影响主进程或其他进程。

输出结果

由于每个进程都有自己的内存空间,p1 和 p2 进程对 nums 的修改不会相互影响。因此,p2 进程打印的 nums 只会包含它自己的修改。

最终输出结果是:
[11, 22, 0, 1, 2, 3]

总结

  • 进程隔离:每个进程都有自己的内存空间,对全局变量的修改不会影响其他进程。
  • 输出结果:p2 进程打印的 nums 只包含它自己的修改,即 [11, 22, 0, 1, 2, 3]。

http://www.kler.cn/a/612344.html

相关文章:

  • 高级数据结构04动态规划
  • Quarkus云原生服务开发详解
  • 《向量数据库指南》——解密DeepSearcher:推动AI智能报告生成的新范式
  • leetcode543.二叉树的直径
  • HarmonyOS-ArkUI Grip组件
  • QTcpSocket(客户端实现)多线程连接慢问题
  • MyBatis-Plus(Ⅲ)IService详解
  • python蓝桥杯刷题的重难点知识笔记
  • 【RHCE】LVS-NAT模式负载均衡实验
  • Flask接口开发--POST接口
  • 数据仓库 - 转转 - 一面凉经
  • 算力盒子VS边缘计算盒子
  • 脉冲编码器:精准定位与高效控制的科技先锋
  • 创建login.api.js步骤和方法
  • 【蓝桥杯】重点冲刺
  • ubuntu24.04.2 NVIDIA GeForce RTX 4060笔记本安装驱动
  • Milvus 与 Spring Boot 集成
  • SpringMVC 拦截器详解与实战
  • GAUSSDB 分布式存储机制深度解析
  • sortablejs el-table 树结构拖拽