線程

多線程--threading

python的thread模塊是比較底層的模塊,python的threading模塊是對thread做了些封裝的,可以更加方便的使用

1.使用thearding模塊

說明:

--1.可以明顯的看出使用了多線程并發(fā)的操作,花費時間要短很多

--2.創(chuàng)建好的線程,需要調(diào)用start()方法來啟動

2.主線程會等待所有子線程結(jié)束后才結(jié)束

為什么會等子線程結(jié)束,主線程才結(jié)束呢?回收內(nèi)存。

3.查看線程

上述代碼添加了以下代碼:


4.threading注意點

threading.Thread封裝子類

通過使用threading模塊能完成多任務(wù)的程序開發(fā),為了讓每個線程的封裝性更完美,所以使用threading模塊時,往往會定義一個新的子類class,只要繼承threading.Thread就可以了,然后重新run方法


5.線程的執(zhí)行順序


說明:

只能保證每個線程都運行完整個run函數(shù),但是線程的啟動順序,run函數(shù)中每次循環(huán)的執(zhí)行順序都不能確定

注意:

每個線程一定會有一個名字,盡管上面的例子中沒有指定線程對象的name,但是python會自動為線程指定一個名字

當(dāng)線程的run()方法結(jié)束時該線程完成

無法控制線程調(diào)度程序,但是可以通過被的方式來影響線程調(diào)度的方式

線程的集中狀態(tài):啟動,調(diào)度,結(jié)束,等待

6.多線程--共享全局變量

兩個線程修改全局變量

7.列表當(dāng)做實參傳遞到線程中


在一個進程內(nèi)的所有線程共享全局變量,能夠在不適用其他方式的前提下完成

8.進程線程

進程:能夠完成任務(wù),比如一臺電腦上能夠同時運行多個QQ

線程:能夠完成多任務(wù),比如一個QQ中的多個聊天窗口

9.同步

同步就是協(xié)同步調(diào),按預(yù)定的先后次序進行運行。

10.互斥鎖

當(dāng)多個線程幾乎同時修改某一個共享數(shù)據(jù)的時候,需要進行同步控制

鎖的好處:

確保了某段關(guān)鍵代碼只能由一個線程從頭到尾完整的執(zhí)行

鎖的壞處:

阻止了多線程并發(fā)執(zhí)行,包含鎖的某段代碼實際上只能以單線程模式執(zhí)行,效率就大大的下降了,

由于可以存在對哦個鎖,不同的線程持有不同的鎖,并試圖獲取對方持有的鎖時,可能會造成死鎖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 線程 引言&動機 考慮一下這個場景,我們有10000條數(shù)據(jù)需要處理,處理每條數(shù)據(jù)需要花費1秒,但讀取數(shù)據(jù)只需要0....
    不浪漫的浪漫_ea03閱讀 416評論 0 0
  • 引言&動機 考慮一下這個場景,我們有10000條數(shù)據(jù)需要處理,處理每條數(shù)據(jù)需要花費1秒,但讀取數(shù)據(jù)只需要0.1秒,...
    chen_000閱讀 587評論 0 0
  • 多任務(wù)可以由多進程完成,也可以由一個進程內(nèi)的多線程完成。我們前面提到了進程是由若干線程組成的,一個進程至少有一個線...
    壁花燒年閱讀 886評論 0 0
  • 1.線程 Python中使用線程有兩種方式:函數(shù)或者用類來包裝線程對象。 1.函數(shù)式:調(diào)用thread模塊中的st...
    一只寫程序的猿閱讀 1,106評論 0 1
  • 1.鋸下黑檀木小條,以及更小的方塊 2.打磨小條和方塊至1000目 3.刻刀開槽,根據(jù)銀絲直徑確定開槽的寬度和深度...
    桑浩閱讀 1,752評論 0 1

友情鏈接更多精彩內(nèi)容