os.fork() 会使用写时复制还是在 Python 中执行父进程的完整复制?

2023-11-25

我想将相当大的数据结构加载到进程中,然后分叉以希望减少总内存消耗。将要os.fork以这种方式工作还是复制 Linux (RHEL) 中的所有父进程?


即使使用 COW,CPython 也会使用引用计数并将引用计数存储在每个对象的标头中。因此,除非您不对这些数据执行任何操作,否则很快就会对相关内存进行虚假写入,这将迫使系统复制数据。将其传递给函数?这是另一个参考,一个INCREF,写入 COW 内存。将其存储在变量或对象属性中?相同的。甚至只是查找一个方法就可以了?同上。 出于各种原因,一些内置数据结构将其大部分数据与对象(例如大多数集合)分开分配。如果这些最终出现在不同的页面上——或者无论 COW 工作的粒度如何——你可能会很幸运。然而,从这样的集合引用的对象也不例外——使用它同样可以操作它的引用计数。

此外,一些数据将被共享,因为设计上没有对其进行写入(例如,本机 CPython 代码),并且您的某些对象fork'd进程不碰may被分享(老实说我不确定;我think循环GC不会写入对象)。但 Python 代码使用的 Python 对象实际上肯定会被写入。类似的推理适用于 PyPy、Jython、IronPython 等(只是它们会摆弄对象标头中的位而不是进行引用计数),但我不能保证所有可能的配置。

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

os.fork() 会使用写时复制还是在 Python 中执行父进程的完整复制? 的相关文章

  • 在嵌入式系统上将内核控制台发送到哪里?

    我正在开发一个嵌入式系统 该系统当前通过串行端口 1 上的控制台输出启动 Linux 使用启动加载程序中的控制台启动参数 然而 最终我们将使用这个串行端口 内核控制台输出的最佳解决方案是什么 dev null 能否以某种方式将其放在 pty
  • 我应该使用 Pylons 还是 Pyramid?

    我本来打算从 Django 迁移到 Pylons 但后来我遇到了 Pyramid 塔架和金字塔有什么区别 我读了一些文字塔书 http pylonsbook com 目前涵盖 Pylons 0 9 7 并且想知道它是否是 Pylons 和
  • 在 opencv 中一次性将旋转和平移结合起来

    我有一段用于旋转和平移图像的代码 Point2f pt 0 in rows double angle atan trans c trans b 180 M PI Mat r getRotationMatrix2D pt angle 1 0
  • 如何将多个 Excel 工作表转换为 csv python

    我想转换所有的excel文档 xls 将工作表转换为 csv 如果 excel 文档只有一张工作表 那么我将进行如下转换 wb open workbook path1 sh wb sheet by name Sheet1 csv file
  • Django 视图集没有属性“get_extra_actions”

    我第一次使用 Django 我正在尝试构建一个 API 我正在遵循一些教程和示例 它工作正常 但在安装所有要求和项目后 我现在正在 Raspberry Pi 中运行该项目失败并出现以下错误 Performing system checks
  • 组内条件计数

    我想在之后进行条件计数groupby 例如 按列的值分组A 然后计算每组中值出现的频率5出现在列中B 如果我整个过程都这样做DataFrame 只是len df df B 5 所以我希望我能做到df groupby A df B 5 siz
  • 无法启动 Windows 快捷方式

    我正在尝试使用 python 启动 Windows 我已经尝试了 os system subprocess call os startfile 等多种方法 但总是收到错误消息 指出路径不存在 我知道路径是正确的 因为我尝试在 CMD EXE
  • 将 Python 列表(JSON 或其他)插入 MySQL 数据库

    所以我在Python中有一堆数组数据 嗯 相反 我有一个清单 我试图将此数组存储到 MySQL 数据库中的单个单元格中 我尝试使用 JSON 来序列化我的数据 但也许我不明白 JSON 是如何工作的 因此 在连接到我的数据库后 我尝试了上游
  • 将 Django 的 FileField 设置为现有文件

    我在磁盘上有一个现有文件 例如 folder file txt 在 Django 中有一个 FileField 模型字段 当我做 instance field File file folder file txt instance save
  • 使用 Django 添加额外 \\ 字符的 JSON 编码

    我正在尝试创建一个函数 将包含消息和 Django 模型实例的字典转换为 JSON 然后我可以将其传回客户端 例如 我在 models py 中定义了模型 Test from django db import models class Te
  • 在Python中将数组的元素从科学记数法转换为十进制记数法

    我有一个 numpy 数组 其元素采用科学格式 我想将它们转换为十进制格式 我的 numpy 数组如下所示 array 93495052 96955582 98555123 06146193 array 1 00097681e 09 9 9
  • Django Rest框架Json解析

    我想解析传入的POSTdjangoviews py 文件中的数据 发布数据 number 17386372 data banana apple grapes 这是我尝试读取上述传入数据的方法request views py class Fr
  • Django 自定义文件存储系统

    我有一个自定义存储 import os from django core files storage import Storage class AlwaysOverwriteFileSystemStorage Storage def get
  • 无法使用python和beautifulsoup抓取网页中的某些href

    我目前正在使用 Python 3 4 和 bs4 爬取网页 以收集塞尔维亚在里约 2016 年的比赛结果 所以网址here http rio2016 fivb com en volleyball women teams srb serbia
  • Django Admin Media 前缀 URL 问题

    我有以下文件夹结构 src BAT templates admin base html src BAT media base css src BAT media admin media base css 设置 py MEDIA ROOT o
  • DataFrame 对象没有属性“sort_values”

    dataset pd read csv dataset csv fillna 100 dataset Id 0 dataset i 0 dataset j 0 entries dataset dataset Id 0 print type
  • 仅将唯一行插入 SQLite (python)

    我在用着cursor executemany将 CSV 文件中的批量行插入到 SQLite 表中 根据主键字段 其中一些行预计会重复 当我执行该命令时 可以预见的是 我会收到完整性错误 并且不会插入任何内容 如何有选择地仅插入非重复行 而无
  • 在Python中设置Windows命令行终端标题

    我在 Windows 计算机上运行某个 Python 脚本的多个实例 每个实例都来自不同的目录并使用单独的 shell 窗口 不幸的是 Windows 为每个 shell 窗口提供了相同的名称
  • 与仅调用依赖函数/类相比,在 FastAPI 中使用 Depends 有哪些优点?

    FastAPI 提供了way https fastapi tiangolo com tutorial dependencies 通过其自己的依赖关系解析机制来管理依赖关系 例如数据库连接 它类似于一个pytest夹具系统 简而言之 您在函数
  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec

随机推荐