主頁 > 知識庫 > python threading模塊的使用指南

python threading模塊的使用指南

熱門標簽:南陽打電話機器人 聊城語音外呼系統(tǒng) 地圖標注自己和別人標注區(qū)別 打電話機器人營銷 ai電銷機器人的優(yōu)勢 騰訊地圖標注沒法顯示 孝感營銷電話機器人效果怎么樣 海外網(wǎng)吧地圖標注注冊 商家地圖標注海報

1. threding模塊創(chuàng)建線程對象

接上述案例,我們可以利用程序阻塞的時間讓程序執(zhí)行后面的任務(wù),可以用多線程的方式去實現(xiàn)。對應(yīng)的需要我們借助threading模塊去實現(xiàn):
如下所示

import time
import threading
def work():
"""只有函數(shù)對象才能佈田名線積"""
print('5.洗茶杯: 1min ' )
time.sleep(1)
print('6.放茶葉: 1min ' )
time.sleep(1)

start_time = time .time()
print( '1.洗壺: 1min ' )
time.s1eep(1)
print( '2.灌涼水:1min ' )
time.sleep(1)
print( '3.燒水: 1min ' )
time.sleep(1)
print( '4.等水燒開:3min ' )
work_thread = threading.Thread(target=work)

# 啟動線程對象
work_thread.start()
time.sleep(1) # 5.洗茶杯: 1min
time.sleep(1) # 6.放茶葉: 1min
time.sleep(1)
print( '7.泡茶:1min ' )
time.sleep(1)
print('總共花了: ',time.time() - start_time)

以上案例是一個單線程,需要特別注意的是threading模塊操作線程所操作的必須是函數(shù)對象。通過threding模塊可以把一個普通的函數(shù)對象轉(zhuǎn)化為線程對象。

2. threding模塊創(chuàng)建多線程

當一個進程啟動之后,會默認產(chǎn)生一個主線程,因為線程是程序執(zhí)行流的最小單元,當設(shè)置多線程時,主線程會創(chuàng)建多個子線程,在python中,默認情況下,主線程執(zhí)行完自己的任務(wù)以后,就退出了,此時子線程會繼續(xù)執(zhí)行自己的任務(wù),直到自己的任務(wù)結(jié)束。

import time
import threading

def upload():
print("開始上傳文件...")
time.sleep(2)
print("完成上傳文件...")

def down1oad():
print("開始下載文件...")
time.s1eep(2)
print("完成下載文件...")

if __name__ == '__main__':
upload_thread = threading.Thread(target=up1oad)
up1oad_thread .start()
up1oad_thread.join()
down1oad_thread = threading.Thread(target=down1oad,daemon=True)
down1oad_thread.start()
print('主線程結(jié)束')

也就是說主線程在分配任務(wù)時會創(chuàng)建多個子線程,子線程的任務(wù)進度不會阻礙主線程的執(zhí)行。但是主線程會等待子線程執(zhí)行任務(wù)完之后才結(jié)束主線程。也就是說實際上主線程是先執(zhí)行完任務(wù)的,如果你想在主線程執(zhí)行完之后就結(jié)束整個線程的話,那么可以設(shè)置守護主線程。

3. 多線程的參數(shù)傳遞

多線程的參數(shù)傳遞用args接受位置參數(shù),用kwargs接受關(guān)鍵字參數(shù)。如下所示:

import threading

def get(ur1,header=None):
    print(ur1)
    print(header)

for url in [ 'https : / /www.baidu.com', 'https:/ /www. soso.com ' ,' https: / /www . 360. com']:
    # threading.Thread
get_thread = threading. Thread(target=get,args=(ur1, ), kwargs={ ' header ':{ 'user-agent ' : ' pythonrequests'}})
    get_thread.start

4. 線程產(chǎn)生的資源競爭

首先我們來看一個案例:

import threading
import time
import random

def add1(n):
    for i in range(100) :
        time.sleep(random.randint(1,3))
        with open( 'he7lo.txt', mode='a', encoding='utf-8 ' ) as f:
            f.write(f'in} he1lo wor1d !'+ 'he7lo wor1d !'*1024)
            f.write(' \n ')

if __name__ == '___main__' :
    for n in range(10) :
        t1 = threading. Thread(target=add1,args=(n,))
        t1.start()

以上就是python threading模塊的使用指南的詳細內(nèi)容,更多關(guān)于python threading模塊的使用的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python threading.local代碼實例及原理解析
  • python語言線程標準庫threading.local解讀總結(jié)
  • Python中threading庫實現(xiàn)線程鎖與釋放鎖
  • python中threading和queue庫實現(xiàn)多線程編程
  • Python threading Local()函數(shù)用法案例詳解

標簽:楊凌 南寧 六盤水 揚州 撫州 迪慶 牡丹江 聊城

巨人網(wǎng)絡(luò)通訊聲明:本文標題《python threading模塊的使用指南》,本文關(guān)鍵詞  python,threading,模塊,的,使用指南,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python threading模塊的使用指南》相關(guān)的同類信息!
  • 本頁收集關(guān)于python threading模塊的使用指南的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章