最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

判斷Threading.start新線程是否執(zhí)行完畢的實(shí)例

 更新時(shí)間:2020年05月02日 09:27:49   作者:福斯基  
這篇文章主要介紹了判斷Threading.start新線程是否執(zhí)行完畢的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

新寫(xiě)自己的Threading類

class MyThread(threading.Thread):#我的Thread類 判斷流程結(jié)束沒(méi) 用于os shell命令是否執(zhí)行判斷
 def __init__(self,func = ""):#輸入待執(zhí)行函數(shù)名 我執(zhí)行的函數(shù)沒(méi)有參數(shù)就沒(méi)有加args輸入了
 threading.Thread.__init__(self)
 self.func = func
 self.result = 1#未完成為1 標(biāo)志位
 # 調(diào)用start自動(dòng)執(zhí)行的函數(shù)
 def run(self):
 self.result = self.func()
 self.result = 0#完成返回0

然后執(zhí)行

class MyThread(threading.Thread):#我的Thread類 判斷流程結(jié)束沒(méi) 用于os shell命令是否執(zhí)行判斷
 def __init__(self,func = ""):#輸入待執(zhí)行函數(shù)名 我執(zhí)行的函數(shù)沒(méi)有參數(shù)就沒(méi)有加args輸入了
 threading.Thread.__init__(self)
 self.func = func
 self.result = 1#未完成為1 標(biāo)志位
 # 調(diào)用start自動(dòng)執(zhí)行的函數(shù)
 def run(self):
 self.result = self.func()
 self.result = 0#完成返回0

這樣就可以判斷os.sysytem里語(yǔ)句是否執(zhí)行完成是否

補(bǔ)充知識(shí):python的threading.Thread線程的start、run、join、setDaemon

Pycharm整體看下Thread類的內(nèi)容:模擬的是Java的線程模型

表示方法method,上面的鎖頭表示這個(gè)是類內(nèi)部的方法,從方法名字命名規(guī)范可以看出,都是_和__開(kāi)頭的,一個(gè)下劃線表示是子類可以繼承,兩個(gè)下劃線表示是只有Thread內(nèi)部可以訪問(wèn),子類都不可以訪問(wèn)。

表示property,可以使用類直接訪問(wèn):Thread._block

表示field,就是self.x定義的東東

表示變量variable

name/getName/setName是線程名字有關(guān)的;

isDaemon是否是守護(hù)進(jìn)程

setDaemon設(shè)置為守護(hù)進(jìn)程,如果把調(diào)用線程設(shè)置為守護(hù)線程,那么等調(diào)用線程結(jié)束后,被調(diào)用的子線程結(jié)束與否都會(huì)隨著守護(hù)線程結(jié)束

isAlive線程是否是活動(dòng)狀態(tài)

start方法開(kāi)啟一個(gè)新線程。把需要并行處理的代碼放在run()方法中,start()方法啟動(dòng)線程將自動(dòng)調(diào)用 run()方法。

run線程實(shí)際在運(yùn)行的內(nèi)容,可以被子類繼承和重寫(xiě)overide。

join阻塞調(diào)用它的線程,直到等待被調(diào)用的線程運(yùn)行結(jié)束,其實(shí)就變成了單線程。參數(shù)timeout的作用是,當(dāng)前線程等待被調(diào)用的子線程的時(shí)間,如果時(shí)間到了,不管子線程是否結(jié)束,當(dāng)前線程都進(jìn)入就緒狀態(tài),重新等待CPU調(diào)度。

Join方法的Java示例:

新建一個(gè)Thread類,重寫(xiě)run()方法:

public class MyThread extends Thread {

 @Override
 public void run() {
  System.out.println("子線程執(zhí)行完畢");
 }
}

新建測(cè)試類,測(cè)試Join()方法:

public class TestThread {

 public static void main(String[] args) {
  //循環(huán)五次
  for (int i = 0; i < 5; i++) {

   MyThread thread = new MyThread();
   //啟動(dòng)線程
   thread.start();
   try {
    //調(diào)用join()方法
    thread.join();
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
   System.out.println("主線程執(zhí)行完畢");
   System.out.println("~~~~~~~~~~~~~~~");

  }
 }
}

輸出結(jié)果如下:

子線程執(zhí)行完畢
主線程執(zhí)行完畢
~~~~~~~~~~~~~~~
子線程執(zhí)行完畢
主線程執(zhí)行完畢
~~~~~~~~~~~~~~~
子線程執(zhí)行完畢
主線程執(zhí)行完畢
~~~~~~~~~~~~~~~
子線程執(zhí)行完畢
主線程執(zhí)行完畢
~~~~~~~~~~~~~~~
子線程執(zhí)行完畢
主線程執(zhí)行完畢
~~~~~~~~~~~~~~~

結(jié)果分析: 子線程每次都在主線程之前執(zhí)行完畢,即子線程會(huì)在主線程之前執(zhí)行。

什么時(shí)候用join()方法?  

在很多情況下,主線程生成并起動(dòng)了子線程,如果子線程里要進(jìn)行大量的耗時(shí)的運(yùn)算,主線程往往將于子線程之前結(jié)束,但是如果主線程處理完其他的事務(wù)后,需要用到子線程的處理結(jié)果,也就是主線程需要等待子線程執(zhí)行完成之后再結(jié)束,這個(gè)時(shí)候就要用到j(luò)oin()方法了。

用start方法來(lái)啟動(dòng)線程,真正實(shí)現(xiàn)了多線程運(yùn)行,這時(shí)無(wú)需等待run方法體代碼執(zhí)行完畢而直接繼續(xù)執(zhí)行下面的代碼。通過(guò)調(diào)用Thread類的start()方法來(lái)啟動(dòng)一個(gè)線程,這時(shí)此線程處于就緒(可運(yùn)行)狀態(tài),并沒(méi)有運(yùn)行,一旦得到cpu時(shí)間片,就開(kāi)始執(zhí)行run()方法,這里方法 run()稱為線程體,它包含了要執(zhí)行的這個(gè)線程的內(nèi)容,run方法運(yùn)行結(jié)束,此線程隨即終止?! ?/p>

run()方法只是類的一個(gè)普通方法而已,如果直接調(diào)用Run方法,程序中依然只有主線程這一個(gè)線程,其程序執(zhí)行路徑還是只有一條,還是要順序執(zhí)行,還是要等待run方法體執(zhí)行完畢后才可繼續(xù)執(zhí)行下面的代碼,這樣就沒(méi)有達(dá)到寫(xiě)線程的目的。

總結(jié):調(diào)用start方法方可啟動(dòng)線程,而run方法只是thread的一個(gè)普通方法調(diào)用,還是在主線程里執(zhí)行。把需要并行處理的代碼放在run()方法中,start()方法啟動(dòng)線程將自動(dòng)調(diào)用 run()方法

可見(jiàn)join和setDaemon作用是相反的,一個(gè)是等待子線程結(jié)束,一個(gè)是不等到子線程結(jié)束,有可能把子線程強(qiáng)制結(jié)束。如果兩個(gè)都不設(shè)置的時(shí)候,那么主線程和子線程各自運(yùn)行各自的,互不干擾,誰(shuí)結(jié)束都不會(huì)影響另一個(gè)運(yùn)行情況:見(jiàn)http://m.fzitv.net/article/185872.htm示例

以上這篇判斷Threading.start新線程是否執(zhí)行完畢的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用python/R語(yǔ)言繪制圣誕樹(shù)實(shí)例代碼

    利用python/R語(yǔ)言繪制圣誕樹(shù)實(shí)例代碼

    圣誕節(jié)快到了,分別用R和Python繪制了圣誕樹(shù)祝你們圣誕節(jié)快樂(lè),所以下面這篇文章主要給大家介紹了關(guān)于如何利用python/R繪制圣誕樹(shù)的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • 分布式爬蟲(chóng)scrapy-redis的實(shí)戰(zhàn)踩坑記錄

    分布式爬蟲(chóng)scrapy-redis的實(shí)戰(zhàn)踩坑記錄

    最近用scrapy-redis嘗試了分布式爬蟲(chóng),使用過(guò)程中也遇到了不少問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于分布式爬蟲(chóng)scrapy-redis的實(shí)戰(zhàn)踩坑記錄,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Python實(shí)現(xiàn)批量將word轉(zhuǎn)換成pdf

    Python實(shí)現(xiàn)批量將word轉(zhuǎn)換成pdf

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)批量將word文檔轉(zhuǎn)換成pdf文件,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08
  • python操作excel之openpyxl模塊讀寫(xiě)xlsx格式使用方法詳解

    python操作excel之openpyxl模塊讀寫(xiě)xlsx格式使用方法詳解

    這篇文章主要介紹了python操作excel之openpyxl模塊讀寫(xiě)xlsx格式使用方法詳解,需要的朋友可以參考下
    2022-12-12
  • Python使用cProfile分析和定位應(yīng)用性能瓶頸點(diǎn)

    Python使用cProfile分析和定位應(yīng)用性能瓶頸點(diǎn)

    cProfile?是?Python?標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,用于對(duì)?Python?程序進(jìn)行性能分析,它能輸出每個(gè)函數(shù)的調(diào)用次數(shù)、執(zhí)行耗時(shí)等詳細(xì)信息,下面我們來(lái)看看如何使用cProfile分析和定位應(yīng)用性能瓶頸點(diǎn)吧
    2024-12-12
  • Python實(shí)現(xiàn)快速多線程ping的方法

    Python實(shí)現(xiàn)快速多線程ping的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)快速多線程ping的方法,實(shí)例分析了Python多線程及ICMP數(shù)據(jù)包的發(fā)送技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 8個(gè)Python編程進(jìn)階常用技巧分享

    8個(gè)Python編程進(jìn)階常用技巧分享

    介紹?Python?炫酷功能的文章層出不窮,但是還有很多?Python?的編程小技巧鮮被提及,所以本文會(huì)試著介紹一些其它文章沒(méi)有提到的小技巧,讓我們一探究竟吧
    2023-07-07
  • python 根據(jù)時(shí)間來(lái)生成唯一的字符串方法

    python 根據(jù)時(shí)間來(lái)生成唯一的字符串方法

    今天小編就為大家分享一篇python 根據(jù)時(shí)間來(lái)生成唯一的字符串方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • PyQt5 在QListWidget自定義Item的操作

    PyQt5 在QListWidget自定義Item的操作

    這篇文章主要介紹了PyQt5 在QListWidget自定義Item的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 保姆級(jí)python教程寫(xiě)個(gè)貪吃蛇大冒險(xiǎn)

    保姆級(jí)python教程寫(xiě)個(gè)貪吃蛇大冒險(xiǎn)

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)雙人模式的貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評(píng)論

卢龙县| 灵台县| 葵青区| 汉中市| 铜梁县| 宝鸡市| 麦盖提县| 时尚| 文登市| 通渭县| 稷山县| 沅江市| 晋江市| 无为县| 东乌珠穆沁旗| 马山县| 景东| 德清县| 宣化县| 永安市| 河津市| 铁岭市| 东城区| 朝阳县| 寿阳县| 石屏县| 余干县| 藁城市| 体育| 德阳市| 舞钢市| 泸州市| 长兴县| 墨玉县| 平罗县| 永宁县| 宁都县| 河南省| 玉门市| 望奎县| 龙州县|