理解python并发编程_Python并发编程很简单
上次已經和大家探討了關于進程和線程的區別和聯系相關的東東,今天呢,咱們再次回到
好啦,廢話少說,咱們就開始吧!
首先說一下哦,_thread和threading哦,到這可能有朋友會問了,這兩個有什么區別呢?好問題哦,其實呢,_thread是提供低級別而且是比較原始的線程支持的哦,而且呢它還有一個簡單的鎖,通過以前咱們的講解大家對于_thread前面的下劃線的意思已經明白啦,它是代表隱藏的含義哦,這也表明了其實_thread的;因此呢,如果你在Python中想進行多線程編程,那就好好使用threading模塊吧,因為在threading中提供了功能超級豐富的對多線程編程的支持哦!
其實,對于Python創建線程的方式主要有兩種哦,今天呢,咱們就先介紹一下第一種吧,第二種方式咱們下次介紹哦,那第一種方式是什么呢?它就是使用threading模塊的Thread類的構造方法(也可以叫構造器哦)創建線程哦!
那如何使用threading模塊的Thread類的構造器創建線程呢?不要著急哦,要想知道怎么創建,首先咱們需要了解一下threading模塊中Thread類的構造器的語法結構哦:
__init__(self, group=None, target=None,
name=None, args=(), kwargs=None, *, daemon=None)
首先說一下哦,上面Thread類的這個構造器中的很多參數是自身賦值None,說明它是默認參數哦,對于這類參數可以不做任何賦值就會有None這個默認值哦,好啦,咱們就說一下__init__()中各個參數的含義吧:
第一個參數self,這個大家都熟悉啦,在Python的類中每個方法的首個參數必須是self哦;
第二個參數group,表示該線程所屬的線程組哦,據說這個參數是保留使用的,還沒有具體的實際實現意義哦;
第三個參數target,表示該線程要調度的目標方法哦;
第四個參數name表示線程名哦;
第五個參數args,通過它的賦值可以看出它是一個元組哦,表示以位置參數的形式為target指定的函數傳入參數哦;
第六個參數kwargs,代表一個字典哦,表示你可以以關鍵字參數的形式為target指定的函數傳入參數哦;
第七個參數daemon,代表指定所構建的線程是否是后臺線程哦。
到這大家是否對于Thread類的構造器__init__()有點晦澀難懂呢,沒關系哦,下面咱們舉個“栗子”就清楚啦,舉“栗子”之前咱們先說一下使用Tread類的狗仔妻創建多線程的步驟哦:
第一步呢,就是調用Tread類的構造器創建線程對象哦,在創建線程對象時,target參數指定的函數將會作為線程的執行體哦;
第二步呢,就是調用線程對象的start()函數啟動這個線程哦。
好啦,下面咱們正式舉“栗”哦:
上面就是咱們所編寫的程序哦,可以看到哦,在主函數中咱們定義了一個循環哦,在這個循環中咱們設定當循環變量i等于10時就會創建并啟動兩個咱們定義的新的線程哦,其中第16行和第19行就是咱們所創建的兩個線程哦,對于兩個線程的運行都是調用start()函數哦!
下面咱們就運行一下上面咱們所編寫的這個程序來看看效果吧:
上面就是多線程的運行結果哦,咱們用不同的顏色進行了標記哦,看一看到主線程和咱們所創建并運行的兩個線程都進行了無規律的交叉運行哦,這就表明咱們使用Python進行多線程編程成功了哦,這就是經典的并發編程哦,其實呢,是因為咱們電腦的CPU以極快的速度在這幾個線程之間進行切換執行的,由于電腦主頻很高哦,所以呢,咱們就感覺是電腦進行了并發編程的哦!
好啦,上面就是咱們所聊的關于使用threading模塊的Thread類的構造器__init__()創建線程的東東哦,關于Python創建線程的第二種方法(使用繼承threading模塊的Thread類創建線程類)咱們下次進行介紹哦,今天咱們就聊到這吧,下次再見哦!
總結
以上是生活随笔為你收集整理的理解python并发编程_Python并发编程很简单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何安装python3.7.6_Cent
- 下一篇: 深入理解python.md_linux-