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

【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]。

相关文章:

  • 使用crypto-js进行DES加/解密
  • 常用的排序算法------练习2
  • JumpServer:一款企业级开源堡垒机
  • mapbox进阶,仿照百度,加载marker点位,移入marker点切换图标,点击展示气泡,气泡和marker联动
  • Ubuntu系统保姆级Paperless-ngx部署指南:零基础实现文档云端化管理
  • LeetCode 热题 100_爬楼梯(81_70_简单_C++)(动态规划)
  • SLAM文献之-NR-SLAM: Non-Rigid Monocular SLAM
  • 使用独立服务器的最佳方式指南
  • 【软件测试】一篇总结软件测试的基础知识
  • redis(主从复制)教程
  • 播放本地视频-实现视频画廊功能
  • @emotion/css + react+动态主题切换
  • Ubuntu-22.04安装ROS2
  • [GESP202503 C++一级题解]:B4258 : 四舍五入
  • 《一本书讲透Elasticsearch:原理、进阶与工程实践》读书笔记
  • 老外讲解用Delphi 12.3作web
  • Linux搭建NFS服务
  • GPIO输出实验,控制LED灯
  • 地图(死亡细胞)
  • 第六章 数学
  • php网站开发价格/seol英文啥意思
  • 淮南公司做网站/上海单个关键词优化
  • 网站用图片做背景/教育机构排名
  • 小程序saas系统/网站seo优化运营
  • 网站优化怎样做外链/网络营销经典案例
  • 建设交通人才网站/山东百度推广