如何在两个不同的线程中同时执行PyObject_CallObject()?

库玛

我有两个线程同时运行的两个函数。这两个函数都调用此方法PyObject_CallObject(pFunc,pArgs)来执行两个不同的python函数。但是,access violation reading location当我尝试这样做时,我会遇到异常。pFunc并且pArgs在两个功能中使用的功能均是该功能的本地功能,并且没有共享数据。还是我如何获得例外?

克里斯蒂安·海姆斯

那是不可能的。必须调用任何的Python CAPI函数之前获得全局解释锁(GIL)。没有GIL的情况下,只有少数几个函数可以调用。

https://docs.python.org/2/c-api/init.html#thread-state-and-the-global-interpreter-lock

Python解释器不是完全线程安全的。为了支持多线程Python程序,有一个全局锁,称为全局解释器锁或GIL,必须先由当前线程持有,然后才能安全地访问Python对象。没有锁,即使是最简单的操作也可能在多线程程序中引起问题:例如,当两个线程同时增加同一对象的引用计数时,引用计数最终只能被增加一次,而不是两次。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

两个线程同时执行同步块

在Singleton Pattern中,当两个或多个线程同时执行时会发生什么?

如何在Spark中具有不同列数的两个DataFrame上执行并集?

如何同时在php中执行两个foreach循环

如何同时启动两个具有不同线程功能的线程组?

如何在Python中同时写入两个CSV?

如何同步不同类中的两个线程

如何在JQuery中同时制作两个动画?

如何在C中使用open mp同时执行两个不同的功能

如何在两个不同的CRM系统中自动执行复制故障单的过程?

PyEval_CallObject和PyObject_CallObject返回一个空对象

在Android中同时运行两个不同的线程

如何设置两个curl命令以永远在不同时间执行?

如何在两个线程中打印句子?

如何在VB中同时执行两个查询?(MySQL的)

如何在uipickerview中同时旋转两个组件

如何使两个线程执行两个不同的循环或方法?

无法使用C#中的不同帐户同时执行两个Office 365命令

当两个日期不同时,如何在javascript中获取两个日期之间的差异

如何在计算机中同时获得两个不同的音频流

如何在R中同时grep两个词

如何在PHP中同时执行两个while循环?

如何在方法中处理两个线程的暂停

如何在owasp zap中同时执行两个站点

如何在bash中同时重复两个for循环?

如何在 Laravel 中同时保存两个模型?

如何在reactjs中同时绑定两个方法

如何在 Django 中同时获取两个模型

如何在不同的进程中同时运行两个 asyncio 循环?