gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

Python線程的創建與常用方法(實例詳解)

本篇文章給大家帶來了關于python的相關知識,其中主要介紹了關于線程的創建與常用的方法,還有一些線程演示案例,下面一起來看一下,希望對大家有幫助。

Python線程的創建與常用方法(實例詳解)

推薦學習:python視頻教程

線程的創建與使用

在Python中有很多的多線程模塊,其中 threading 模塊就是比較常用的。下面就來看一下如何利用 threading 創建線程以及它的常用方法。

線程的創建 -threading

函數名 介紹 舉例
Thread 創建線程 Thread(target, args)

Thread 的動能介紹:通過調用 threading 模塊的 Thread 類來實例化一個線程對象;它有兩個參數: target 與 args (與創建進程時,參數相同)。target 為創建線程時要執行的函數,而 args 為是要執行這個函數時需要傳入的參數。

線程對象的常用方法

接下里看一下線程對象中都有哪些常用的方法:

函數名 介紹 用法
start 啟動線程 start()
join 阻塞線程直到線程執行結束 join(timeout=None)
getName 獲取線程的名字 getName()
setName 設置線程的名字 setName(name)
is_alive 判斷線程是否存活 is_alive()
setDaemon 守護線程 setDaemon(True)
  • start 函數:啟動一個線程;沒有任何返回值和參數。
  • join 函數:和進程中的 join 函數一樣;阻塞當前的程序,主線程的任務需要等待當前子線程的任務結束后才可以繼續執行;參數為 timeout:代表阻塞的超時時間。
  • getName 函數:獲取當前線程的名字。
  • setName 函數:給當前的線程設置名字;參數為 name:是一個字符串類型
  • is_alive 函數:判斷當前線程的狀態是否存貨
  • setDaemon 函數:它是一個守護線程;如果腳本任務執行完成之后,即便進程池還沒有執行完成業務也會被強行終止。子線程也是如此,如果希望主進程或者是主線程先執行完自己的業務之后,依然允許子線程繼續工作而不是強行關閉它們,只需要設置 setDaemon() True 就可以了。

PS:通過上面的介紹,會發現其實線程對象里面的函數幾乎和進程對象中的函數非常相似,它們的使用方法和使用場景幾乎是相同的。

線程演示案例

單線程初始案例

演示 多線程之前 先看一下下面這個案例,運行結束后看看共計耗時多久

1、定義一個列表,里面寫一些內容。

2、再定義一個新列表,將上一個列表的內容隨機寫入到新列表中;并且刪除上一個列表中隨機獲取到的內容。

3、這里需要使用到 r andom 內置模塊

代碼示例如下:

# coding:utf-8import timeimport random   old_lists = ['羅馬假日', '怦然心動', '時空戀旅人', '天使愛美麗', '天使之城', '倒霉愛神', '愛樂之城']new_lists = []def work():     if len(old_lists) == 0:     # 判斷 old_list 的長度,如果為0 ,則表示 該列表的內容已經被刪光了         return ''old_list' 列表內容已經全部刪除'     old_choice_data = random.choice(old_lists)      # random 模塊的 choice函數可以隨機獲取傳入的 old_list 的元素     old_lists.remove(old_choice_data)               # 當獲取到這個隨機元素之后,將該元素從 old_lists 中刪除     new_choice_data = '%s_new' % old_choice_data    # 將隨機獲取到的隨機元素通過格式化方式重新賦值,區別于之前的元素     new_lists.append(new_choice_data)               # 將格式化的新的隨機元素添加至 new_lists 列表      time.sleep(1)if __name__ == '__main__':     strat_time = time.time()      for i in range(len(old_lists)):         work()      if len(old_lists) ==0:         print(''old_lists' 當前為:{}'.format(None))     else:         print((''old_lists' 當前為:{}'.format(old_lists)))      if not len(new_lists) == 0:         print((''new_lists' 當前為:{}'.format(new_lists)))     else:         print(''new_lists' 當前為:{}'.format(None))      end_time = time.time()     print('運行結束,累計耗時:{} 秒'.format(end_time - strat_time))

運行結果如下:


Python線程的創建與常用方法(實例詳解)

從運行輸出結果我們可以看到整個腳本運行共計耗時7秒,而且 new_lists 列表內的元素都經過格式化處理后加上了 _new ;不僅如此, 因為 random模塊的choice函數 原因,new_lists 的內容順序與 old_lists 也是不一樣;每次運行順序都會不一樣,所以 old_lists 的順序是無法得到保障的。


多線程演示案例

代碼示例如下:

# coding:utf-8import timeimport randomimport threading   old_lists = ['羅馬假日', '怦然心動', '時空戀旅人', '天使愛美麗', '天使之城', '倒霉愛神', '愛樂之城']new_lists = []def work():     if len(old_lists) == 0:     # 判斷 old_list 的長度,如果為0 ,則表示 該列表的內容已經被刪光了         return ''old_list' 列表內容已經全部刪除'     old_choice_data = random.choice(old_lists)      # random 模塊的 choice函數可以隨機獲取傳入的 old_list 的元素     old_lists.remove(old_choice_data)               # 當獲取到這個隨機元素之后,將該元素從 old_lists 中刪除     new_choice_data = '%s_new' % old_choice_data    # 將隨機獲取到的隨機元素通過格式化方式重新賦值,區別于之前的元素     new_lists.append(new_choice_data)               # 將格式化的新的隨機元素添加至 new_lists 列表      time.sleep(1)if __name__ == '__main__':     strat_time = time.time()      print(''old_lists'初始長度為:{}'.format(len(old_lists)))	# 獲取 old_lists 與 new_lists 最初始的長度     print(''new_lists'初始長度為:{}'.format(len(new_lists)))     thread_list = []        # 定義一個空的 thread_list 對象,用以下方添加每個線程      for i in range(len(old_lists)):         thread_work = threading.Thread(target=work)     # 定義一個線程實例化對象執行 work 函數,因為 work 函數沒有參數所以不用傳 args         thread_list.append(thread_work)                 # 將 thread_work 添加進 thread_list         thread_work.start()                             # 啟動每一個線程      for t in thread_list:   # 通過for循環將每一個線程進行阻塞         t.join()      if len(old_lists) ==0:         print(''old_lists' 當前為:{}'.format(None), '當前長度為:{}'.format(len(old_lists)))     else:         print((''old_lists' 當前為:{}'.format(old_lists)))      if not len(new_lists) == 0:         print(''new_lists' 當前長度為:{}'.format(len(new_lists)))         print(''new_lists' 當前的值為:{}'.format(new_lists))     else:         print(''new_lists' 當前為:{}'.format(None))      end_time = time.time()     print('運行結束,累計耗時:{} 秒'.format(end_time - strat_time))

運行結果如下:


Python線程的創建與常用方法(實例詳解)

從運行的結果來看,我們初始的單線程任務耗時為 7秒,在使用多線程之后,僅耗時 1秒就完成了,大大的提高了我們的運行效率。


線程的問題

通過上面的練習,我們發現線程的使用方法幾乎與進程是一模一樣的。它們都可以互不干擾的執行程序,也可以使得主線程的程序不需要等待子線程的任務完成之后再去執行。只不過剛剛的演示案例中我們使用了 join() 函數進行了阻塞,這里可以吧 join() 去掉,看看執行效果。

與進程一樣,線程也存在著一定的問題。

  • 線程執行的函數,也同樣是無法獲取返回值的。
  • 當多個線程同時修改文件一樣會造成被修改文件的數據錯亂的錯誤(因為都是并發去操作一個文件,特別是在處理交易場景的時候,需要尤為注意)。

關于這些線程中存在的問題同樣是可以解決的,在下一章節的 線程池與全局鎖 我們會有詳細的介紹。

推薦學習:python視頻教程

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
男女裸体影院高潮| 午夜一级免费视频| 亚洲怡红院在线| 天天视频天天爽| 国产色视频在线播放| 深爱五月综合网| 成人av在线不卡| 岳毛多又紧做起爽| 国产毛片视频网站| 免费观看精品视频| 亚洲福利精品视频| 超碰人人草人人| 真人做人试看60分钟免费| 欧美一二三不卡| 妺妺窝人体色www在线小说| 国产精品69页| 视频区 图片区 小说区| 99久re热视频精品98| 女人被男人躁得好爽免费视频 | 9久久婷婷国产综合精品性色 | 国模杨依粉嫩蝴蝶150p| 成年人免费在线播放| 亚洲精品视频导航| 99精品视频国产| 人妻av中文系列| 久久99爱视频| 免费毛片网站在线观看| 手机在线免费观看毛片| 国产日韩视频在线播放| 一二三四视频社区在线| 一本久道综合色婷婷五月| 日韩欧美中文视频| 欧美v在线观看| 亚洲国产精品女人| 国产午夜伦鲁鲁| 国内外成人激情免费视频| 欧美色图色综合| 黑人巨茎大战欧美白妇| 少妇高清精品毛片在线视频| av电影一区二区三区| 日本男人操女人| 日韩av中文字幕第一页| 一级网站在线观看| 精品免费国产一区二区| 精品国产av无码一区二区三区| 亚洲av首页在线| 乌克兰美女av| 久久久久久久久久久久久久国产| 久久久久久久中文| 国产精品又粗又长| 亚洲美女自拍偷拍| 成人免费无码av| 久久国产精品国产精品| 日韩黄色片视频| 91成人在线观看喷潮教学| www.av毛片| 久久综合亚洲精品| 最近免费观看高清韩国日本大全| 一本色道久久88亚洲精品综合| 色婷婷综合在线观看| 91香蕉视频导航| 在线观看亚洲色图| 日本在线一二三区| 久久这里只精品| 操bbb操bbb| 久久久成人精品一区二区三区| 干日本少妇视频| 超级碰在线观看| 强开小嫩苞一区二区三区网站| 国产精品专区在线| 福利视频一二区| 国产3p在线播放| 在线看免费毛片| 日韩中文字幕亚洲精品欧美| 日本高清视频免费在线观看| 中文精品无码中文字幕无码专区| 欧美成人xxxxx| 99视频在线免费| jizz欧美性11| 免费的av在线| 亚洲小视频网站| 久久久久久久久网| 日本a在线免费观看| 国产三级三级看三级| 亚洲五月激情网| 婷婷五月综合缴情在线视频| 国产熟人av一二三区| 亚洲精品www.| www.成年人视频| 成人免费xxxxx在线视频| 亚洲三级在线观看视频| 国产黄色片免费在线观看| 中文字幕第88页| 日本男女交配视频| 17c国产在线| 999在线观看视频| 蜜桃福利午夜精品一区| 全黄性性激高免费视频| 污污网站免费观看| 蜜臀精品一区二区| 成人不卡免费视频| 18禁男女爽爽爽午夜网站免费| a级黄色片免费| 手机在线成人免费视频| 国产在线观看欧美| 天堂网在线免费观看| 色欲色香天天天综合网www| 手机版av在线| 成年人免费在线播放| 成人免费aaa| 97av中文字幕| 青青草原国产免费| 日本www.色| av天堂永久资源网| 国产二区视频在线| 中文字幕色呦呦| 久久成人福利视频| 51自拍视频在线观看| 久久这里只精品| 手机看片一级片| 美女一区二区三区视频| 成人av一级片| 日韩中文字幕三区| 日韩精品一区二区免费| 日本a级片在线观看| 无码人妻aⅴ一区二区三区日本| 久久久99精品视频| 男的插女的下面视频| 成人在线观看毛片| 大陆极品少妇内射aaaaaa| 天天看片天天操| 在线视频一二区| 国产奶头好大揉着好爽视频| 色噜噜狠狠一区二区三区狼国成人| 天堂av在线中文| 欧美a级免费视频| 日本精品www| 欧美综合在线观看视频| 五月婷婷深爱五月| 天天综合网久久| 国产精品秘入口18禁麻豆免会员| 一级片视频免费观看| 亚洲黄色小视频在线观看| 天美星空大象mv在线观看视频| 大地资源网在线观看免费官网| 国产黄色片免费在线观看| 国产一区二区网| 亚洲综合色在线观看| 无套内谢丰满少妇中文字幕| 日韩免费在线观看av| 无码aⅴ精品一区二区三区浪潮| 黄色一级片免费的| 亚洲区成人777777精品| 激情伊人五月天| 亚洲天堂av一区二区| 日本免费a视频| 国产不卡的av| 妞干网在线观看视频| 青青在线免费视频| 国产视频一视频二| 日韩在线一区视频| 久久成人免费观看| 精品国产乱码久久久久久1区二区| 日韩av三级在线| 91蝌蚪视频在线| 日韩av在线综合| 99在线观看视频免费| www.涩涩涩| 日韩大片一区二区| 国产玉足脚交久久欧美| 永久免费在线看片视频| 日韩少妇内射免费播放18禁裸乳| 国产手机免费视频| 欧美大片久久久| 国产精品亚洲a| 国产午夜大地久久| 男女啪啪免费观看| 亚洲午夜激情影院| 精品少妇无遮挡毛片| 国产v片免费观看| 日韩一二区视频| 国产在线拍揄自揄拍无码| 久久国产这里只有精品| 99精品视频播放| 欧美视频第三页| 国产在线青青草| 毛片在线视频播放| www.xxx亚洲| 成人一级片网站| 免费观看精品视频| 日本欧美黄色片| 中国丰满人妻videoshd| 欧美交换配乱吟粗大25p| 三年中文高清在线观看第6集| 国产成人在线小视频| aaaaaaaa毛片| 400部精品国偷自产在线观看| 国产一级爱c视频| 国产色一区二区三区| 97视频久久久|