python中的併發編程

首先在python併發編程中,必須把建立子進程的部分使用if __name__ ==‘__main__’ 判斷保護起來。這個緣由是什麼呢?python

在python中每個py文件要麼做爲程序直接執行,要麼被別的文件導入執行。if __name__ ==‘__main__’ 這個語句之下的程序只會在直接執行時纔會走,若是是被別的文件導入該語句之下的程序就不會走。在windows下建立子進程會自動import啓動它的這個文件,而import的時候又執行了整個文件,所以若是將process()直接寫在文件中就會無限遞歸建立子進程報錯。因此必須把建立子進程的部分使用if __name__ ==‘__main__’保護起來。編程

一點小總結:windows

經過學習瞭解IO密集型比較適合用多線程解決多線程

cpu密集型比較適合用多進程解決併發

然而協程:使用進程中一個線程去作多個任務,微線程異步

GIL:用於在進程中對全部線程加鎖,保證同一時刻只能有一個線程被cpu調度學習

 

異步IO 在一個線程去處理請求時,遇到IO阻塞,該線程就去處理別的請求去了,線程

保證線程不會停下來等待,形成資源的浪費。協程

經過學習瞭解IO密集型比較適合用多線程解決cpu密集型比較適合用多進程解決然而協程:使用進程中一個線程去作多個任務,微線程GIL:用於在進程中對全部線程加鎖,保證同一時刻只能有一個線程被cpu調度異步IO 在一個線程去處理請求時,遇到IO阻塞,該線程就去處理別的請求去了,保證線程不會停下來等待,形成資源的浪費
相關文章
相關標籤/搜索