日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
python多線程應(yīng)用中的詳細(xì)介紹

python多線程在應(yīng)用的時(shí)候有不少的事情需要重點(diǎn)的注意。其實(shí)只要掌握這些相關(guān)的技術(shù)段就能保證這個(gè)應(yīng)用的完整。下面我們來看看具體是需要如何進(jìn)行操作。

今天看了近一天關(guān)于多線程的應(yīng)用中,如何安全調(diào)用python多線程方面的資料,開始的時(shí)候看的簡(jiǎn)直頭大如斗,被python語言的全局鎖(Global Interpreter Lock)、線程狀態(tài)(Thread State )等都有點(diǎn)繞暈了,后來經(jīng)過各方面文章和幫助文檔的相互參考,發(fā)現(xiàn)對(duì)于2.4/2.5版本,提供了PyGILState_Ensure, PyGILState_Release,哎,這下可方便大發(fā)了。

一、首先定義一個(gè)封裝類,主要是保證PyGILState_Ensure, PyGILState_Release配對(duì)使用,而且這個(gè)類是可以嵌套使用的。

 
 
 
  1. #include 
  2. class PyThreadStateLock
  3. {
  4. public:
  5. PyThreadStateLock(void)
  6. {
  7. state = PyGILState_Ensure( );
  8. }
  9. ~PyThreadStateLock(void)
  10. {
  11. PyGILState_Release( state );
  12. }
  13. private:
  14. PyGILState_STATE state;
  15. };

二、在主線程中,這樣處理

// 初始化
Py_Initialize();
// 初始化線程支持
PyEval_InitThreads();
// 啟動(dòng)子線程前執(zhí)行,為了釋放PyEval_InitThreads獲得的全局鎖,否則子線程可能無法獲取到全局鎖。
PyEval_ReleaseThread(PyThreadState_Get());

// 其他的處理,如啟動(dòng)子線程等
......

// 保證子線程調(diào)用都結(jié)束后
PyGILState_Ensure();
Py_Finalize();
// 之后不能再調(diào)用任何python的API

以上就是對(duì)python多線程的詳細(xì)介紹。希望對(duì)大家有所幫助。


分享名稱:python多線程應(yīng)用中的詳細(xì)介紹
文章起源:http://www.5511xx.com/article/djpgssc.html