PyPy 中的 GIL 在哪里?

2024-01-03

PyPy GIL 是 RPython 中 PyPy 解释器实现的一部分,还是 translate.py 自动添加的东西?也就是说,如果我用 RPython 编写自己的新语言解释器并通过 translate.py 运行它,它是否会先验地受到 GIL 的约束,还是取决于我的解释器代码?


GIL 处理由 module/thread/gil.py 插入 PyPy 结账中。这是一个可选的翻译功能,仅在启用线程模块时添加。也就是说,RPython 本身不是线程安全语言(例如 C),因此您需要注意正确锁定对象,这样它们就不会出现不一致。主要问题是提供一个线程感知的垃圾收集器,因为我们现在使用的垃圾收集器不是线程安全的,仅仅添加一个锁就会消除自由线程模型的很多好处。

干杯, 菲哈尔

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

PyPy 中的 GIL 在哪里? 的相关文章

  • PyPy 安装

    目录 前言 1 下载 2 安装 2 1 安装包解压缩 2 2 添加路径至系统变量 3 cmd 调用 4 对比 Python 3 8的界面 总结 前言 提示 这里可以添加本文要记录的大概内容 听说 PyPy 的纯 Python 环境的运行速度
  • Python 中 GIL 的新实现是否处理了竞争条件问题?

    我读了一篇文章关于 Python 中的多线程 他们尝试使用同步来解决竞争条件问题 我运行了下面的示例代码来重现竞争条件问题 import threading global variable x x 0 def increment funct
  • 布尔恒等 == True 与 is True

    这是使用的标准约定if foo is None而不是if foo None测试一个值是否是特定的None 如果你想确定一个值是否精确True 不仅仅是一个类似真实的值 有什么理由使用if foo True而不是if foo is True
  • 如何使用 pybind11 在 C++ 线程内调用 Python 函数作为回调

    我设计了一个 C 系统 它从在单独线程中运行的过程调用用户定义的回调 简化版system hpp看起来像这样 pragma once include
  • CPython 和 PyPy 小数运算性能

    我想使用数百万个数据点 以小数表示 运行 100k 次模拟 我选择小数而不是浮点数是为了浮点精度和易于对我的逻辑进行单元测试 因为0 1 0 1 0 1对于浮点数不等于 0 3 我希望通过使用 PyPy 来加快模拟速度 但在我的测试过程中我
  • 如何使用 cffi 在 C 中嵌入返回字符串的 Python 函数?

    我正在尝试使用 PyPy 和 cffi 在 C 中嵌入 Python 函数 我正在跟进本指南来自 PyPy 文档 问题是 我发现的所有示例都对整数进行操作 而我的函数接受一个字符串并返回一个字符串 我似乎不知道如何在 C 中嵌入这个函数 因
  • 在 Windows 10 上为 PyPy3 安装 numpy 时出现问题

    我在尝试在 Windows 10 计算机上安装 pypy3 的 numpy 时遇到问题 由于我无法判断这个问题是源于我的 pypy3 安装还是其他原因 所以我在这里描述了迄今为止我所遵循的所有步骤 正如官方所示下载页面 I have 下载并
  • python全局解释器锁GIL问题

    我想在网络上提供一项服务 人们可以测试算法的性能 该算法是用 python 编写并在 Linux 机器上运行的 基本上我想做的是 有一个非常简单的 PHP 处理程序 比如说 start algo php 它接受来自浏览器的请求 并在 php
  • 如何在 Yosemite 上设置 lxml 和 pypy?

    我想学习一些 lxml 和 pypy 所以我决定在我的 Yosemite Mac 上安装它 但经过三天的尝试 我仍然无法尝试 lxml 因为我无法正确设置 这是我所做的 做了一次干净的homebrew and xcode select in
  • 并行文件匹配,Python

    我正在尝试改进扫描文件中是否存在恶意代码的脚本 我们在文件中有一个正则表达式模式列表 每行一个模式 这些正则表达式适用于 grep 因为我们当前的实现基本上是 bash 脚本 find grep 组合 bash 脚本在我的基准目录上花费了
  • 如何在 Cython 中调用多线程 C 函数?

    我有一个关于如何在 Cython 中调用多线程 C 函数的问题 在 C 函数中执行多线程操作之前 之后是否需要释放 获取 GIL 或者我可以像普通的 C 函数一样使用它吗 我应该遵循指示吗here http docs python org
  • python GIL 的多线程示例

    我读过很多关于在编写多线程代码时 python GIL 业务有多么 糟糕 的文章 但我从未见过一个例子 有人可以给我一个基本的例子来说明 GIL 在使用线程时何时会导致问题吗 Thanks 多线程的主要原因之一是程序可以利用多个 CPU 和
  • pypy 内存使用量永远增长?

    我有一个复杂的 python 服务器应用程序 它一直持续运行 下面是它的一个非常简化的版本 当我使用 python 运行以下应用程序时 python Main py 它立即使用 8mb 的内存 并保持在 8mb 的内存 这是应该的 当我使用
  • 为什么 cython 嵌入插件在 python 解释器中比 rust-c 接口版本具有更高的性能?

    我想问一些关于python解释器的底层原理的问题 因为我自己搜索的过程中并没有得到太多有用的信息 我最近一直在使用 rust 编写 python 插件 这为 python 的 cpu 密集型任务提供了显着的加速 并且与 c 相比 编写速度也
  • 为什么 cffi 比 numpy 快这么多?

    我一直在尝试用 python 编写 cffi 模块 它们的速度让我想知道我是否正确使用了标准 python 这让我想彻底转向C 说实话 有一些很棒的 python 库我永远无法用 C 重新实现自己 所以这比任何实际情况都更假设 此示例显示了
  • 枕头安装PyPy3缺少zlib

    我当前正在尝试将 PIL 与 PyPy3 一起使用 但无论我如何尝试安装它 我都会收到错误 首先我尝试使用正常安装pypy3 pip install pillow 但出现我需要 zlib 的错误 因此 在寻找解决方案一段时间后 我发现了ea
  • python 3.7 多线程中的 GIL 行为

    我正在研究并尝试了解 python GIL 以及在 python 中使用多线程的最佳实践 我发现这个演示文稿 https www dabeaz com python UnderstandingGIL pdf and 这个视频 https w
  • 为什么 PyPy 翻译这么慢?

    将 pypy 实现转换为 c 文件并在具有 2G mem 和 Intel Core2 2GHz CPU 的现代笔记本电脑上构建 pypy c 需要几个小时 我知道这是一个 CPU 密集型任务 但是有必要这么慢吗 有没有机会或者空间来减少计算
  • 我需要在 Cython 中使用 `nogil`

    我有一些 Cython 代码 我想尽快运行 我需要释放 GIL 才能执行此操作吗 假设我的代码与此类似 import numpy as np trivial definition just for illustration cdef dou
  • 针对 PyPy 进行优化

    这是后续PyPy 的统计分析器 https stackoverflow com questions 17346226 statistical profiler for pypy 我正在 PyPy 下运行一些 Python 代码 并希望对其进

随机推荐