Python 3.7和PyGILState_sure()(Windows)

Python 3.7和PyGILState_sure()(Windows),python,python-3.x,python-3.6,gil,python-3.7,Python,Python 3.x,Python 3.6,Gil,Python 3.7,我有一个使用Python库的Windows例程。我从3.6.5和一个静态库开始。让它发挥作用。已移动到.dll Python库。同样有效。移至3.7。不起作用。当我试图通过调用PyGILState_sure()和Py_Finalize()来关闭嵌入式Python时,它将挂起。它挂起对PyGILState_sure()的调用 所以我稍微后退了一步,选择了Python 3.6.6。这也行得通。相同的代码,只是不同的库。还有人注意到Python3.7中GIL的行为发生了变化吗?在文档中,他们提到他们对

我有一个使用Python库的Windows例程。我从3.6.5和一个静态库开始。让它发挥作用。已移动到.dll Python库。同样有效。移至3.7。不起作用。当我试图通过调用PyGILState_sure()和Py_Finalize()来关闭嵌入式Python时,它将挂起。它挂起对PyGILState_sure()的调用


所以我稍微后退了一步,选择了Python 3.6.6。这也行得通。相同的代码,只是不同的库。还有人注意到Python3.7中GIL的行为发生了变化吗?在文档中,他们提到他们对GIL做了一些更改。

如果您使用的是python 3.6及以下版本,则需要调用PyEval_InitThreads(),在python 3.7中不再需要这样做,Py_initialize()会为您做。这可能是你的问题吗?

我不这么认为。在Py_Initialize()之前,我只进行了以下调用:Py_IsInitialized()、Py_GetPath()、Py_SetPath()和PyImport_AppendInittab()。[PyImport_AppendInittab()调用PyModule_Create(),但我认为即使在调用PyImport_AppendInittab()时,它也不起作用。哎呀,看起来Py_GetPath()不应该在Py_Initialize()之前调用。我想知道这是否是新的…您应该调用PyImport\u AppendInittab(),然后py\u initializei将尝试发布显示问题的示例代码。