Python主線程如何進行相關(guān)應(yīng)用
Python主線程是我們經(jīng)常使用到的一個變成方式。但是要如何才能更好的使用這中編程語言呢?下面我們就詳細的來看看這篇文章。在Python主線程,或者子線程中,調(diào)用Python本身函數(shù)的都采用如下處理
- {
- class PyThreadStateLock PyThreadLock;
- // 調(diào)用python的API函數(shù)處理
- ......
- }
呵呵,看這樣是否非常簡單了。
另外還有兩個和全局鎖有關(guān)的宏,Py_BEGIN_ALLOW_THREADS 和 Py_END_ALLOW_THREADS。這兩個宏是為了在較長時間的C函數(shù)調(diào)用前,臨時釋放全局鎖,完成后重新獲取全局鎖,以避免阻塞其他python的線程繼續(xù)運行。這兩個宏可以這樣調(diào)用
- {
- class PyThreadStateLock PyThreadLock;
- // 調(diào)用python的API函數(shù)處理
- ......
- Py_BEGIN_ALLOW_THREADS
- // 調(diào)用需要長時間的C函數(shù)
- ......
- Py_END_ALLOW_THREADS
- // 調(diào)用python的API函數(shù)處理
- ......
- }
可能的錯誤及解決
a. 在vs 200x 下 debug 模式出現(xiàn)鏈接問題
- extmodule.obj : error LNK2019: unresolved external
symbol __imp___Py_Dealloc referenced in function _
PySwigObject_format- extmodule.obj : error LNK2019: unresolved external
symbol __imp___Py_NegativeRefcount referenced in function
_PySwigObject_format- extmodule.obj : error LNK2001: unresolved external symbol
__imp___Py_RefTotal- extmodule.obj : error LNK2019: unresolved external symbol
__imp___PyObject_DebugFree referenced in function
_PySwigObject_dealloc- extmodule.obj : error LNK2019: unresolved external symbol __imp
___PyObject_DebugMalloc referenced in function _PySwigObject_New- extmodule.obj : error LNK2019: unresolved external symbol __imp
__Py_InitModule4TraceRefs referenced in function _init_extmodule
主要是因為 Py_DEBUG/Py_TRACE_REFS 引起, 修改 Python\include 下的 pyconfig.h, object.h 兩個文件就行了。以上就是對Python主線程的相信介紹。
【編輯推薦】