Python 多重处理是否从父级复制所有模块?

2024-03-16

我注意到我可以访问子进程中位于子进程函数/目标之外的函数和模块。所以我想知道当我在 python 中创建子进程时它是否会复制当前进程中的所有内容?为什么我可以访问子目标之外的函数和导入的模块?

from multiprocessing import Process, Pipe

def test1():
         return "hello"

def simpleChildProcess( childPipe ):
       # simpleChildProcess can access test1 function
       foo = test1()
       childPipe.send( foo )

parentPipe, childPipe = Pipe()
childProcess = Process( target=simpleChildProcess, args=(childPipe,) )

childProcess.start()

print "Pipe Contains: %s" % parentPipe.recv()

在类 Unix 操作系统上,multiprocessing.Process uses os.fork https://stackoverflow.com/q/33560802/190597产生新的进程。fork创建一个新进程,该进程是父进程的副本,分叉进程从该点恢复fork被称为。

由于 Windows 缺乏fork, multiprocessing.Process启动一个新的Python进程并导入调用模块。在 Windows 上,调用Process必须在里面if __name__ == '__main__'阻止Process避免每次导入调用模块时都被重复调用。 (即使在 Unix 上,包含以下内容也是一个很好的做法if __name__ == '__main__':以防止您的代码导致失控的进程生成)。

因此,子进程可以访问调用模块定义的函数和模块到目前为止 where Process已被调用(对于 Unix 而言)或在导入调用模块之后(对于 Windows 而言)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 多重处理是否从父级复制所有模块? 的相关文章

随机推荐

  • 访问不存在的缩略图

    我制作了一个应用程序 可以向您显示计算机中的文件列表 每当您单击列表中的任何项目时 它旁边的小图片框都会显示相应文件的缩略图 我在 Windows 7 上使用 C 为了获取缩略图 我重复使用了另一个问题中发布的方法 首先 我参考了 Wind
  • Swagger 参数和复杂类型

    在下面的 Swagger 定义中 我需要参数labelValue属于类型LabelValueObject 以便对其进行验证并正确反序列化 但是 我无法弄清楚语法 那怎么办呢 swagger 2 0 paths competition pos
  • Python 中的树实现

    如何在Python中实现树 我是Python初学者 给我一个大概的想法 Build a Node类 具有一些内容对象和子对象列表 它们又是Node
  • 使用 ACL 的 Redis Docker 镜像

    我正在尝试测试新的 Redis 6 ACL 配置 我想使用尽可能简单的配置来运行测试以熟悉配置 我的 Redis 将作为 Docker 容器运行 请考虑一下我是一个 Redis 新手 My Dockerfile FROM redis 6 2
  • “旧版”和“稳定版”有什么区别?

    我正在使用 JQuery Mobile 有两个可用版本 稳定版本和旧版本 我对后一种不太熟悉 什么是旧版本 或者说和稳定版有什么区别 生产现场推荐使用哪一种 非常感谢 遗留版本是旧的稳定版本 仍然可用 并且可能受支持 因为有人可能需要它 例
  • 在 angularJS2 项目中哪里放置/找到 systemjs.config.js 文件?

    我是 Angular 2 的新手 并尝试在我的项目中使用 ng2 datetime picker 现在 在安装 ng2 datetime picker 包后 当我运行该项目时 得到了404 错误指出未找到 ng2 datetime pick
  • GWT 中的 Java 8 支持

    这似乎是一个非常基本的问题 但我到处搜索 发现几乎没有任何地方提到它 所以 我就在这里问一下 目前在 GWT 中支持 Java 8 新语言结构的计划是什么 此外 提议的 Java 8 库的哪些子集将用于客户端模拟 流 API 新的日期 时间
  • 在 C/C++ 中解析二进制消息流

    我正在编写二进制协议 Javad GRIL 协议 的解码器 它由大约一百条消息组成 数据格式如下 struct MsgData uint8 t num float x y z uint8 t elevation 这些字段是 ANSI 编码的
  • 如何在运行时跳过单元测试?

    提前致谢 我们使用 selenium Web 驱动程序进行了一些自动化测试 这些测试非常棒 并且提供了非常好的回归包 问题是现在我们的代码中有功能切换 所以我需要说忽略这些测试 除非该功能切换已打开 关闭 我在谷歌上找不到任何真正的东西 理
  • 用 C 将文本文件中的数字读取到数组中

    我是一个编程菜鸟 所以请耐心等待 我正在尝试将文本文件中的数字读取到数组中 文本文件 somenumbers txt 仅包含 16 个数字 例如 5623125698541159 include
  • Laravel 5:在服务器环境上运行迁移,而不是在本地

    我在 Laravel 5 应用程序中创建了一组简单的数据库迁移 它们在我的本地开发环境中运行良好 现在是时候在我的新生产服务器环境上运行迁移了 我已经配置了数据库连接并部署了应用程序 并且应用程序可以看到数据库 但没有表 因此需要运行迁移
  • 使用分类数据作为 sklearn Logistic 回归中的特征

    我试图了解如何使用分类数据作为特征sklearn linear model s LogisticRegression 我当然知道我需要对其进行编码 我不明白的是如何将编码特征传递给逻辑回归 以便将其作为分类特征进行处理 而不是将其在编码为标
  • Vim swp 文件干扰存储库 vimdiff

    我的设置是使用 vim 特别是图形模式下的 MacVim 编辑源文件 然后使用 vimdiff 再次在图形模式下 进行 mercurial 存储库差异 有时 当我进行 diff 时 vim 会给出错误 交换文件 nn src imm mod
  • 将 SharedPreferences 传递给 doInBackground()

    我试图将 SharedPreferences 首选项作为参数传递给 AsyncTask 中的 doInBackground 函数 我已经将一个字符串 url 传递给它 所以我需要将首选项也作为字符串传递 我可以简单地使用 prefs toS
  • Python tkinter 通过单选按钮输入小部件状态切换

    一个简单的问题 对于像我这样的 tkinter 新手来说不是那么简单 我正在构建一个 GUI 我想要有两个单选按钮来驱动 Entry 小部件的状态 启用或禁用 用户将在其中输入数据 当按下第一个单选按钮时 我希望禁用该条目 当按下第二个单选
  • 春季侦探行李传播未传播/工作

    我们当前使用的是 sleuth 2 2 3 RELEASE 我们看不到 http 标头中传递的 userId 字段没有传播 下面是我们的代码 BaggageField REQUEST ID BaggageField create x vca
  • 找不到 ProfileCommon

    我在我的代码中收到错误 ProfileCommon 无法找到 我不知道如何修复该错误 我使用 system Web Profile 放置命名空间 但这里仍然出现错误 有人可以帮忙怎么做吗 如果您知道请帮助我 谢谢 public partia
  • CSS Flexbox - 根据屏幕尺寸组织弹性项目

    我有一个弹性项目容器 我试图根据屏幕尺寸以不同的布局组织不同数量的弹性项目 例如 在桌面上 我想要有 4 个容器 每个容器有 2 个项目 布局在 2x4 网格中 每个单元格为 1x2 我似乎无法理解的是纯粹使用 Flexbox 在平板电脑上
  • gnuplot:在 y 轴上绘制 4 列的文件

    我有一个包含 4 个数字 最小值 最大值 平均值 标准差 的文件 我想用 gnuplot 绘制它 Sample 24 31 29 0909 2 57451 12 31 27 2727 5 24129 14 31 26 1818 5 0419
  • Python 多重处理是否从父级复制所有模块?

    我注意到我可以访问子进程中位于子进程函数 目标之外的函数和模块 所以我想知道当我在 python 中创建子进程时它是否会复制当前进程中的所有内容 为什么我可以访问子目标之外的函数和导入的模块 from multiprocessing imp