分析 GIL

2024-01-06

有没有办法分析 Python 进程对 GIL 的使用情况?基本上,我想知道GIL 持有时间的百分比是多少。该进程是单线程的。

我的动机是我用 Cython 编写了一些代码,它使用nogil。理想情况下,我想在多线程进程中运行它,但为了知道这是否是一个好主意,我需要知道 GIL 是否在相当长的时间内空闲。


I found 这个相关问题 https://stackoverflow.com/q/795405/2096752,从8年前开始。唯一的答案是“不”。希望从那时起事情已经发生了变化。


完全偶然,我发现了一个可以执行此操作的工具:gil_load https://github.com/chrisjbillington/gil_load.

原来已经发布了after我发布了问题。

干得好,@chrisjbillington。

>>> import sys, math
>>> import gil_load
>>> gil_load.init()
>>> gil_load.start(output = sys.stdout)
>>> for x in range(1, 1000000000):
...     y = math.log(x**math.pi)
[2017-03-15 08:52:26]  GIL load: 0.98 (0.98, 0.98, 0.98)
[2017-03-15 08:52:32]  GIL load: 0.99 (0.99, 0.99, 0.99)
[2017-03-15 08:52:37]  GIL load: 0.99 (0.99, 0.99, 0.99)
[2017-03-15 08:52:43]  GIL load: 0.99 (0.99, 0.99, 0.99)
[2017-03-15 08:52:48]  GIL load: 1.00 (1.00, 1.00, 1.00)
[2017-03-15 08:52:52]  GIL load: 1.00 (1.00, 1.00, 1.00)
<...>

>>> import sys, math
>>> import gil_load
>>> gil_load.init()
>>> gil_load.start(output = sys.stdout)
>>> for x in range(1, 1000000000):
...     with open('/dev/null', 'a') as f:
...         print(math.log(x**math.pi), file=f)

[2017-03-15 08:53:59]  GIL load: 0.76 (0.76, 0.76, 0.76)
[2017-03-15 08:54:03]  GIL load: 0.77 (0.77, 0.77, 0.77)
[2017-03-15 08:54:09]  GIL load: 0.78 (0.78, 0.78, 0.78)
[2017-03-15 08:54:13]  GIL load: 0.80 (0.80, 0.80, 0.80)
[2017-03-15 08:54:19]  GIL load: 0.81 (0.81, 0.81, 0.81)
[2017-03-15 08:54:23]  GIL load: 0.81 (0.81, 0.81, 0.81)
[2017-03-15 08:54:28]  GIL load: 0.81 (0.81, 0.81, 0.81)
[2017-03-15 08:54:33]  GIL load: 0.80 (0.80, 0.80, 0.80)
<...>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分析 GIL 的相关文章

随机推荐

  • 在 Sails.JS 中持久化之前添加缺少的请求参数

    是否可以 插入 丢失的参数 如果未发送 以便通过以下方式将它们全部保留req params all 目前正在尝试这样做 让我no method setParameter error 万一有人需要这个 我只需要处理一个类似的问题 在流程到达控
  • Xamarin.Auth:应用程序更新时帐户数据不会保留

    我正在使用 Xamarin Auth 通过 foursquare 等服务进行身份验证 我的身份验证代码运行良好 问题是当我部署新版本的应用程序时 帐户数据不会保留 每次我在手机上部署测试版本时 我都必须重新进行身份验证 这是我存储帐户的方式
  • 按行排序,然后连接数据框的特定列

    有关的question https stackoverflow com questions 6308933 r concatenate row wise across specific columns of dataframe这不包括排序
  • 阻止 iPhone 应用程序在 iPad 上运行

    我正在发送两个二进制文件 一个用于 iPhone iTouch 另一个用于 iPad 这是同一个应用程序 Apple 是否会确保用户永远不会在 iPad 上收到 iPhone 版本的应用程序 如果是 那么我就没有什么可担心的 但如果不是 那
  • Python 有匿名类吗?

    我想知道 Python 是否有类似 C 匿名类功能的东西 为了澄清这一点 这里有一个示例 C 代码片段 var foo new x 1 y 2 var bar new y 2 x 1 foo Equals bar true 在Python中
  • 这个类型签名发生了什么? (Haskell 中的 Vector.Mutable 修饰符)

    Haskell 中的可变向量具有三个元素级变异器 read PrimMonad m gt MVector PrimState m a gt Int gt m a write PrimMonad m gt MVector PrimState
  • 您知道哪些 GUI 可用性指标?

    当然 最好的衡量标准是用户的幸福感 但是您知道 GUI 可用性测量的哪些指标呢 例如 常见指标之一是执行操作的平均点击次数 您还知道哪些其他指标 Jakob Nielsen 有几篇关于可用性指标的文章 其中一篇标题为 嗯 可用性指标 htt
  • 返回线性矩阵方程的最小二乘解的函数

    我一直在尝试将代码从 Python 重写为 Swift 但我被困在应该返回线性矩阵方程的最小二乘解的函数上 有谁知道用 Swift 编写的库 它具有与numpy linalg lstsq http docs scipy org doc nu
  • 如何为 django-taggit 创建列表和详细视图?

    我有一个相当简单的模型 使用 Django Taggit 进行标记 一切都很好 但现在我想扩展一些功能 但我有点困惑 我想要的是两种观点 显示我在系统中的所有标签的一个 显示我的应用程序中带有特定标签的所有内容的一个 对我来说有意义的是对每
  • 在活动目录中查找计算机

    当我使用 dsa msc 手动搜索计算机并打开其属性时 会出现一个 位置 选项卡 它可能有也可能没有价值 当我尝试使用 Net 的目录服务获取此信息时 我没有看到 位置 属性 我打印了所有可用的属性 但没有看到它 它只是不可用还是我错过了一
  • 带有节点的分类视图

    使用 Drupal 6 我尝试创建一个包含如下视图的页面 分类术语 1 包含该术语的节点的标题和描述 包含该术语的节点的标题和描述 分类学术语 2 包含该术语的节点的标题和描述 包含该术语的节点的标题和描述 分类学术语 3 包含该术语的节点
  • 弱阻力和强阻力有什么区别

    我读过一些关于强抗碰撞性和弱抗碰撞性的文章 但我无法理解其中的区别 我唯一能理解的是 具有弱抗碰撞性的哈希函数发生碰撞的概率较低 而具有强抗碰撞性的哈希函数发生碰撞的概率较高 我无法理解什么是真实的东西 这些参数的意义是什么 谁可以帮我这个
  • 按组选择事件首次发生之前的行

    我有一系列的观察结果 描述了是否以及何时在特定区域发现动物 下面的示例表标识了何时看到某种动物 status 1 或不 status 0 白天 id date status 1 1 2014 06 20 1 2 1 2014 06 21 1
  • CMake路径错误

    我正在尝试为 kinect 演示构建 Visual Studio 项目 rgbddemo http nicolas burrus name index php Research KinectRgbDemoV5 根据页面上的说明 我需要设置
  • 如何获得向量中函数的多个输出?

    假设我有一个函数 其输出是两个实数 a 和 b a b function c 我想获得向量 v 中的所有输出 v function c 没有执行我想要的操作 v 只是 a 当然这里我可以做v a b 但所讨论的函数是 N 维数组的 ind2
  • Ionic 1 推送通知

    有人有 ionic 1 推送通知的经验吗 他们建议的云解决方案有其他替代方案吗 有人可以展示实施示例吗 请记住 我对 ionic 完全陌生 我用这个插件https github com phonegap phonegap plugin pu
  • 如何在 asp.net mvc 3 项目中路由 .aspx 页面?

    我在以下路径中有一个 aspx 页面 Areas Management Views Ticket Report aspx 我想将其路由到浏览器中的以下路径 http localhost Reports Tickets 我怎样才能做到这一点
  • MVC 3 模型验证问题 - 疏忽或有意为之

    我遇到了一个场景 我需要知道当前正在验证哪个属性在一个习惯中ValidationAttribute 我认为这在 MVC 3 中会很容易 因为ValidationContext正在被传递到IsValid http msdn microsoft
  • 时间间隔不均匀的组的滚动总和

    这是我的调整之前发布的问题 https stackoverflow com questions 41693081 r calculate number of distinct categories in the specified time
  • 分析 GIL

    有没有办法分析 Python 进程对 GIL 的使用情况 基本上 我想知道GIL 持有时间的百分比是多少 该进程是单线程的 我的动机是我用 Cython 编写了一些代码 它使用nogil 理想情况下 我想在多线程进程中运行它 但为了知道这是