2014-02-27 58 views
2

我一直在試圖創建一個嵌入多個python線程的C++程序。由於程序的性質,多任務的優勢來自異步I/O;但由於需要在上下文切換之間改變一些變量,所以我需要控制調度。我認爲,因爲python的GIL鎖,這會很簡單,但事實並非如此:python想使用POSIX線程而不是軟件線程,我無法從文檔中找出如果我存儲結果PyEval_SaveThread()並在同一個函數不叫PyEval_RestoreThread() - 所以大概我不應該做的是,等調度嵌入式python進程

是否有可能創建一個自定義調度的嵌入式Python線程,或者被蟒蛇基本設計,以便它不能完成?

回答

1

事實證明,使用PyEval_SaveThread()PyEval_RestoreThread()是不必要的,基本上我使用協程來運行腳本並控制調度。在這種情況下從libPCL。然而,這並不是一個真正的解決方案,因爲如果python遇到語法錯誤,它將會在segout中出現,如果它在協程中,即使只有一個python腳本在一個協程中運行,這仍然會發生。但至少它們似乎並不相互衝突。