使用PyGILState_Ensure

你好, 我有一些有关全球口译锁的问题: 我正在使用Windows XP Professional版本5.1,Python版本2.4.1 和Microsoft Visual C ++.网络版本7.1. calldll.call_foreign_function. 此C ++函数可回调Python 功能. 我要运行它,我在pyeval_callobject之前使用pygilstate_ensure和 pygilstate_release之后. 代码看起来像这样: 静态pyObject *my_callback = null; ... // MY_CALLBACK使用function setCallback从python设置 ... / *是时候致电回调 */ ppyobjarglist = py_buildvalue("()",null); //通用口译员锁(对成功的必不可少的 呼叫任何python函数) pygilstate_state gstate; //确保当前线程已准备就绪 Python C API gstate = pygilstate_ensure(); ppyobjresult = pyeval_callobject(my_callback, ppyobjarglist); if(!((dword_ptr)ppyobjresult)) { //错误处理 ... } 别的 { py_decref(ppyobjresult); } py_decref(ppyobjarglist); pygilstate_release(gstate); 现在我的问题: 全球口译员锁是否有任何风险? 我是否通过Pyeval_callobject调用新的Python过程? (我想没有) 我的这个呼叫pyeval_callobject上次是多长时间? 是否有归结为 我在调用函数中使用的代码. 它是否允许迫使线等待(通过使GIL蓄积)? 窗户挂断的风险吗? 通过回调进行几个通话,我的DLL功能有风险 呼叫重叠和信息丢失了吗? 谢谢你的帮助! 拉尔夫 - - 欲望,ein paar euro nebenbei zu verdienen? 哦,科斯顿,哦,里西科! satte provisionenfürgmx合作伙伴:http://www.gmx.net/de/go/partner(_@_ _)

标签: python

添加新评论