2012-09-12 32 views
0

我想創建一個多線程程序通過啓動一個調用函數,然後調用一些python模塊,但程序掛在那裏,因爲它獲取一些PyGILState_Ensure()鎖定和等待它無限期釋放。請你告訴我這裏有什麼問題。在嵌入式Python模塊的C++多線程

是啊,其實是一個python模塊調用我的C++代碼,它調用另一個python模塊在單獨的線程,這就是爲什麼我認爲它等待PyGIL釋放導致死鎖,所以,有沒有解決方案使用該補丁去除PyGIL?

回答

2

Python解釋器不可重入,需要在解釋器被調用時鎖定解釋器(請參閱(例如)http://dabeaz.blogspot.be/2011/08/inside-look-at-gil-removal-patch-of.html)。在你的特定情況下,似乎在解釋器上已經有另一個Python調用正在運行,並且它持有GIL。

+0

是的,其實是一個python模塊調用我的C++代碼,它調用另一個python模塊在單獨的線程,這就是爲什麼我認爲它等待PyGIL釋放導致死鎖,所以,有沒有解決方案使用該補丁去除PyGIL? –