Python中怎么搭建多線程環境

Python中怎么搭建多線程環境,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

創新互聯于2013年成立,是專業互聯網技術服務公司,擁有項目成都網站設計、成都做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元大渡口做網站,已為上家服務,為大渡口各地企業和個人服務,聯系電話:13518219792

在Python的thread module所提供的接口中,一定不能少的肯定是創建線程的接口,倘若沒有這個接口,生活還有什么意義呢J?在上面的thread1.py中,我們正是通過其提供的start_new_thread創建了一個嶄新的線程。好,我們就進入這個start_new_ thread,看看Python是如何進行創世紀的工作的。

[threadmodule.c]   static PyObject* thread_PyThread_start_new_thread(PyObject *self, PyObject     *fargs)   {       PyObject *func, *args, *keyw = NULL;       struct bootstate *boot;       long ident;       PyArg_UnpackTuple(fargs, "start_new_thread", 2, 3, &func, &args,         &keyw);       //[1]:創建bootstate結構       boot = PyMem_NEW(struct bootstate, 1);       boot->interp = PyThreadState_GET()->interp;       boot->funcfunc = func;       boot->argsargs = args;       boot->keywkeyw = keyw;       //[2]:初始化多線程環境       PyEval_InitThreads(); /* Start the interpreter's thread-awareness */       //[3]:創建線程       ident = PyThread_start_new_thread(t_bootstrap, (void*) boot);       return PyInt_FromLong(ident);   }

代碼清單15-1的[1]、[2]和[3]分別有如下含義:

[1]  創建并初始化bootstate結構boot,在boot中,將保存關于線程的一切信息,如:線程過程,線程過程的參數等。

[2]  初始化Python多線程環境。

[3]  以boot為參數,創建操作系統的原生線程。

在代碼清單15-1的[1]中,我們注意到boot->interp中保存了Python的PyInter- preterState對象,這個對象中攜帶了Python的module pool這樣的全局信息,Python中所有的thread都會共享這些全局信息。關于代碼清單15-1的[2]處所示的多線程環境的初始化動作,有一點需要特別說明,當Python啟動時,是并不支持多線程的。

換句話說,Python中支持多線程的數據結構以及GIL都是沒有創建的,Python之所以有這種行為是因為大多數的Python程序都不需要多線程的支持。假如一個簡單地統計詞頻的Python腳本中居然出現了多線程,面對這樣的代碼,我們一定都會抓狂的J。

對多線程的支持并非是沒有代價的,最簡單的一點,如果激活多線程機制,而執行的Python程序中并沒有多線程,那么在100條指令之后,Python虛擬機同樣會激活線程的調度。而如果不激活多線程,Python多線程環境虛擬機則不用做這些無用功。所以Python選擇了讓用戶激活多線程機制的策略。在Python虛擬機啟動時。

多線程機制并沒有被激活,它只支持單線程,一旦用戶調用thread.start_new_thread,明確指示Python虛擬機創建新的線程。Python就能意識到用戶需要多線程的支持,這個時候,Python多線程環境會自動建立多線程機制需要的數據結構、環境以及那個至關重要的GIL。

看完上述內容,你們掌握Python中怎么搭建多線程環境的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!

當前文章:Python中怎么搭建多線程環境
當前網址:http://m.kartarina.com/article10/gesggo.html

成都網站建設公司_創新互聯,為您提供虛擬主機企業建站建站公司標簽優化軟件開發用戶體驗

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

營銷型網站建設
主站蜘蛛池模板: 国产成人无码a区在线视频 | 无码国产乱人伦偷精品视频| 性色av无码免费一区二区三区| 麻豆亚洲AV成人无码久久精品| 无码av不卡一区二区三区| 日韩夜夜高潮夜夜爽无码| 伊人久久综合无码成人网| 久久中文字幕无码一区二区| 国产AV无码专区亚洲精品| 久久亚洲精品无码av| 中国无码人妻丰满熟妇啪啪软件| 无码精品一区二区三区在线| 国产午夜无码福利在线看网站| 无码专区中文字幕无码| yy111111少妇无码影院| 人妻丰满熟妇无码区免费 | 亚洲精品无码国产片| 一本一道AV无码中文字幕| av无码免费一区二区三区| 国产网红无码精品视频| 伊人久久精品无码av一区| 国产成人无码av在线播放不卡 | 本免费AV无码专区一区| 日韩少妇无码喷潮系列一二三 | 激情无码人妻又粗又大中国人| 日韩视频无码日韩视频又2021| 无码人妻一区二区三区一 | 东京热人妻无码人av| 全免费a级毛片免费看无码| 中文无码字幕中文有码字幕| 日韩av无码中文字幕| 无码一区二区三区视频| 亚洲欧洲日产国码无码网站| 久久99久久无码毛片一区二区| 无码人妻丰满熟妇区毛片| 精品一区二区三区无码免费直播| 无码中文在线二区免费| 精品久久久久久中文字幕无码 | 亚洲av无码无在线观看红杏| 一本一道av中文字幕无码| 亚洲av无码精品网站|