重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
這篇文章主要介紹python阻塞調度的使用方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創新互聯建站是一家集網站建設,衛輝企業網站建設,衛輝品牌網站建設,網站定制,衛輝網站建設報價,網絡營銷,網絡優化,衛輝網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。
1、說明
標準調度是python使用軟件時鐘調度線程,有時python的線程會自動阻塞,例如raw_input(),sleep()等功能,此時python使用阻塞調度。
(1)主線程調用sleep(1)后,調用Py_BEGIN_ALLOW_THREADS立即釋放GIL,然后調用操作系統的sleep操作。此時,主線程由操作系統自動管理。
(2)子線程獲得GIL。此時,主線程和子線程可以同時由操作系統安排。操作系統在執行子線程一段時間后懸掛,安排主線程,在主線程sleep結束前懸掛主線程,繼續喚醒子線程執行。
(3)當主線程結束時,操作系統喚醒主線程。主線程調用Py_END_ALLOW_THREADS再次申請GIL,重新進入python標準調度過程。
2、實例
[ceval.h] #define Py_BEGIN_ALLOW_THREADS { \ PyThreadState *_save; \ _save = PyEval_SaveThread(); #define Py_END_ALLOW_THREADS PyEval_RestoreThread(_save); \ } [ceval.c] PyThreadState* PyEval_SaveThread(void) { PyThreadState *tstate = PyThreadState_Swap(NULL); if (interpreter_lock) PyThread_release_lock(interpreter_lock); return tstate; } void PyEval_RestoreThread(PyThreadState *tstate) { if (interpreter_lock) { int err = errno; PyThread_acquire_lock(interpreter_lock, 1); errno = err; } PyThreadState_Swap(tstate); }
以上是“python阻塞調度的使用方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創新互聯行業資訊頻道!