腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
(9999+)
视频
沙龙
3
回答
Python
嵌入
线程
--避免死锁?
、
、
、
有什么方法可以嵌入
python
,允许从
python
回调到C++,允许
python
代码生成
线程
,并避免死锁? 要调用
Python
,我需要持有
GIL
。通常,我在第一次创建解释器时获得主
线程
状态,然后在调用
Python
之前使用PyEval_RestoreThread()获取
线程
状态下的
GIL
和
交换。这意味着
Python
将保存
GIL
(可能来自其他
线
浏览 9
提问于2009-04-29
得票数 7
1
回答
Boost
Python
,将C++回调传播到
Python
,导致分段错误。
、
、
、
我在C++中有下面的监听器,它接收一个
Python
对象来传播回调。::class_<PyClient>("PyClient",
python
::init<
python
::object>()) .def("pokeHandler", &PyClient我知道,如果我从C++代码中调用示例,就会解决这个问题,但是这个脚本将由其他
Python
模块运行,该模块将调用给定特定delay.So的示例方法,预期的功能将是C++更新实体的值,而
浏览 6
提问于2015-07-22
得票数 1
2
回答
在使用多
线程
C++扩展时,是否需要注意
Python
?
、
、
、
我现在正在用
Python
实现一个数据订阅者,它订阅了一个数据发布者(实际上是一个ZeroMQ发布者套接字),并且在任何新消息被输入后都会得到通知。在我的订阅服务器中,消息在收到后被转储到数据处理器。由于数据处理器是用C++编写的,所以我必须用一个简单的C++模块来扩展
Python
代码。# main.py import loggingimport
浏览 5
提问于2016-05-29
得票数 4
回答已采纳
3
回答
python
线程
和
套接字
、
我有一个“我只是想要理解它”的问题..首先,我在Ubuntu上使用
python
2.6.5。 所以..。
python
中的
线程
(通过
线程
模块)只是“
线程
”,它只是告诉
GIL
在特定时间段内运行来自每个“
线程
”的代码块,依此类推。实际上这里并没有真正的
线程
..所以问题是-如果我在一个
线程
中有一个阻塞套接字,现在我正在发送数据,并阻塞
线程
大约5秒。我希望阻塞所有的程序,因为它是一个阻塞
线程
的C命令(sock
浏览 2
提问于2011-02-07
得票数 5
回答已采纳
1
回答
从C++函数调用
python
时处理
GIL
、
、
更多细节对
GIL
相当清楚: ..。但是,当
线程
是从C创建的(例如,由具有自己的
线程
管理的第三方库创建的)时,它们既不包含
GIL
,也没有
线程
状态结构。如果需要从这些
线程
调用
Python
代码(通常这将是上述第三方库提供的回调API的一部分),则必须首先通过创建
线程
状态数据结构向解释器注册这些<
浏览 6
提问于2022-07-05
得票数 10
回答已采纳
1
回答
Python
Api
线程
问题
、
我正在编写一个C程序,它使用用
python
编写的网络库。我将
python
嵌入到
python
中。库发送所有请求异步,并在请求完成时通过信号通知我。 我做错什么了?为了让多
线程
浏览 0
提问于2012-12-03
得票数 4
回答已采纳
1
回答
boost
python
线程
分割故障
、
、
考虑下面简单的
python
扩展。当start()-ed时,Foo将只将下一个顺序整数添加到py::list中,每秒钟添加一次:#include <thread>(gdb) inspect obj $1 = (const boost::
python
::api::object &) @0x62d368: {<boost::
python
::api::object_base> = {<bo
浏览 4
提问于2015-05-14
得票数 4
回答已采纳
1
回答
Boost
python
/从
线程
导入模块需要ReleaseLock()。为什么?
、
、
我用多
线程
开发了一个boost.
python
C/C++程序。在main()中,我创建了一个
线程
: pthread_create( &id,&detached_attr,newThread,NULL ); } catch (py::error_already_set const &) { } //Some boos
浏览 1
提问于2012-10-02
得票数 1
1
回答
嵌入式
Python
应用程序中Py_Finalize过程中的致命错误
、
、
我是否按正确的顺序使用
GIL
和
线程
状态命令?我是否过早地结束了
Python
解释器
线程
并破坏了
Python
线程
合并机制?主
线程
初始化
和
终结
Python
。实例(CPyInstance)
和
管理
Python
(ACQUIRE_PY_
GIL
)。类CPyInstance初始化并最终完成
Python
线程
管理。
Python
管理
浏览 13
提问于2014-11-29
得票数 3
回答已采纳
3
回答
为什么
Python
是用
GIL
编写的?
、
全局解释器锁(
GIL
)似乎经常被引用为
线程
之类的操作在
Python
中比较棘手的一个主要原因--这就提出了一个问题:“为什么首先要这么做?”作为一名程序员,我不知道为什么会这样--在
GIL
中输入的逻辑是什么?
浏览 0
提问于2013-02-13
得票数 135
回答已采纳
1
回答
CPython -锁定主
线程
中的
GIL
、
、
CPython
线程
支持的文档是令人沮丧的矛盾
和
稀疏的。例如,在幕后,
Python
似乎区分了“主
线程
”(我猜这是调用Py_Initialize的
线程
)
和
其他
线程
。具体来说,在“主”
线程
中获取
GIL
浏览 3
提问于2014-06-30
得票数 16
2
回答
用
Python
和
C api进行多
线程
、
、
、
我有一个C++程序,它使用C++来使用我的
Python
库。
Python
库
和
C++代码都是多
线程
的。 特别是,C++程序的一个
线程
实例化了继承自threading.Thread的
Python
对象。我需要我的所有C++
线程
能够调用该对象上的方法。从我的第一次尝试(我只是天真地从主
线程
实例化对象,然后等待一段时间,然后调用该方法),我注意到,与创建的对象关联的
Python
线程
的执行在执行返回到C++程序后立即停止。如果执行
浏览 4
提问于2015-04-12
得票数 12
回答已采纳
1
回答
在不同设置中使用
和
引用
GIL
时对I/O一词的混淆
、
、
、
我在
Python
上看到了名为"
Python
\O--第19部分,高级文件输入
和
输出“的博客,如果我进入
Python
并搜索输入/输出:,示例仅限于打印语句
和
读取/写入文件。我最近读了很多关于
GIL
和
多
线程
的文章,除了I/O之外,还出现了术语I/O。 I/O绑定似乎是指存在大量CPU空闲的状态,这是由于将数据发送到CPU的速度慢。最后,关于
GIL
的
Python
中
浏览 2
提问于2017-07-27
得票数 2
2
回答
Python
:
GIL
上下文切换
、
、
、
、
因此,我通常非常了解
Python
中的 (
GIL
)是如何工作的。本质上,当解释器运行时,一个
线程
为N个刻度保存
GIL
(其中N可以使用sys.setcheckinterval设置),此时
GIL
被释放,另一个
线程
可以获取
GIL
。如果一个
线程
开始I/O操作,也会发生这种情况。 我有点困惑的是,这一切是如何与C扩展模块一起工作的。如果您有一个获得
GIL
的C扩展模块,然后使用PyEval_EvalCode执行一些
python<
浏览 0
提问于2013-04-27
得票数 9
1
回答
如何在Py_Initialize后释放
GIL
?
、
、
、
、
我正在尝试将
python
嵌入到GUI 应用程序中,因此我在应用程序的主
线程
中初始化了
python
解释器,并且可以从另一个
线程
启动
python
脚本。我读过关于PyGILState_Ensure
和
PyGILState_Release的文章,并将它们放在我的代码周围,这些代码在我的子
线程
中启动
python
脚本。我的主
线程
似乎没有释放
GIL
(用PyGILState检查)。
GIL
Py_Initialize
浏览 10
提问于2022-02-16
得票数 1
2
回答
Python
防止CPU在多核计算机中的使用率超过100%?
、
、
、
、
许多参考文献指出,
Python
降低了多核机器中多
线程
代码的性能,因为每个
线程
都需要在执行之前获得
GIL
。(1)
线程
A获取
GIL
,执行一些时间,释放
GIL
..。然而,经过一些简单的实验,我发现虽然
GIL
降低了性能,但在
浏览 1
提问于2016-01-29
得票数 3
回答已采纳
1
回答
如何从boost
线程
调用
Python
?
、
、
、
、
我有一个
Python
,它调用了一个C++ boost
python
库,它都能工作。但是,我有一个回调的C++场景,在这个场景中,来自boost
线程
的C++调用
Python
,并在C++端得到一个访问冲突。如果我使用
python
线程
执行完全相同的回调,那么它将完美地工作。因此,我怀疑我不能简单地使用boost
线程
从C++中回调
Python
,而是需要做一些额外的事情才能工作吗?
浏览 4
提问于2016-12-20
得票数 3
回答已采纳
1
回答
当
线程
被I/O操作阻塞时,
python
会并发运行
线程
吗?
、
、
: 所有
Python
的阻塞I/O原语都在等待I/O块解析时释放
GIL
--就这样简单!当然,在继续执行进一步的
Python
代码之前,他们需要再次获得
GIL
,但是对于机器周期的长时间间隔,他们只是在等待一些I/O syscall,他们不需要
GIL
,所以他们不坚持它!*这是否意味着当open、read或wri
浏览 7
提问于2017-07-15
得票数 0
8
回答
什么是CPython中的全局解释器锁(
GIL
)?
、
、
从
Python
中删除
GIL
引起了很多议论,我想知道为什么这一点如此重要。我自己从来没有写过编译器或解释器,所以不要在细节上节俭,我可能需要他们来理解。
浏览 4
提问于2009-08-18
得票数 261
回答已采纳
4
回答
Python
线程
和
GIL
、
、
、
我读过关于
GIL
的文章,但它从来没有明确说明这是否包括主
线程
(我假设是这样)。我这样问的原因是因为我有一个带有
线程
设置的程序,可以修改字典。主
线程
根据玩家输入进行添加/删除,而
线程
循环数据更新和更改数据。 但是,在某些情况下,
线程
可能会遍历字典键,可以删除它们。如果有一个所谓的
GIL
,并且它们是按顺序运行的,为什么我会收到字典更改的错误?
浏览 1
提问于2011-01-20
得票数 6
点击加载更多
热门
标签
更多标签
云服务器
ICP备案
云点播
对象存储
即时通信 IM
活动推荐
运营活动
广告
关闭
领券