av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

創(chuàng)新互聯(lián)Python教程:python如何使用多線程

多線程(英語(yǔ):multithreading),是指從軟件或者硬件上實(shí)現(xiàn)多個(gè)線程并發(fā)執(zhí)行的技術(shù)。具有多線程能力的計(jì)算機(jī)因有硬件支持而能夠在同一時(shí)間執(zhí)行多于一個(gè)線程,進(jìn)而提升整體處理性能。具有這種能力的系統(tǒng)包括對(duì)稱(chēng)多處理機(jī)、多核心處理器以及芯片級(jí)多處理(Chip-level multithreading)或同時(shí)多線程(Simultaneous multithreading)處理器。在一個(gè)程序中,這些獨(dú)立運(yùn)行的程序片段叫作“線程”(Thread),利用它編程的概念就叫作“多線程處理(Multithreading)”。具有多線程能力的計(jì)算機(jī)因有硬件支持而能夠在同一時(shí)間執(zhí)行多于一個(gè)線程(臺(tái)灣譯作“執(zhí)行緒”),進(jìn)而提升整體處理性能。

為雞澤等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及雞澤網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、雞澤網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

python 多線程之使用方法

Python 提供多線程編程的模塊有以下幾個(gè):

- _thread

- threading

- Queue

- multiprocessing

下面一一介紹:

1. _thread 模塊提供了低級(jí)別的基本功能來(lái)支持多線程功能,提供簡(jiǎn)單的鎖來(lái)確保同步,推薦使用 threading 模塊。

2. threading 模塊對(duì) _thread 進(jìn)行了封裝,提供了更高級(jí)別,功能更強(qiáng),更易于使用的線程管理的功能,對(duì)線程的支持更為完善,絕大多數(shù)情況下,只需要使用 threading 這個(gè)高級(jí)模塊就夠了。

相關(guān)推薦:《Python教程》

使用 threading 進(jìn)行多線程操作:

方法一:是創(chuàng)建 threading.Thread 實(shí)例,調(diào)用其 start() 方法。

import time
import threading
def task_thread(counter):
    print(f'線程名稱(chēng):{threading.current_thread().name} 參數(shù):{counter} 開(kāi)始時(shí)間:{time.strftime("%Y-%m-%d 
    %H:%M:%S")}')
    num = counter
    while num:
        time.sleep(3)
        num -= 1
    print(f'線程名稱(chēng):{threading.current_thread().name} 參數(shù):{counter} 結(jié)束時(shí)間:{time.strftime("%Y-%m-%d 
    %H:%M:%S")}')
if __name__ == '__main__':
    print(f'主線程開(kāi)始時(shí)間:{time.strftime("%Y-%m-%d %H:%M:%S")}')
    #初始化3個(gè)線程,傳遞不同的參數(shù)
    t1 = threading.Thread(target=task_thread, args=(3,))
    t2 = threading.Thread(target=task_thread, args=(2,))
    t3 = threading.Thread(target=task_thread, args=(1,))
    #開(kāi)啟三個(gè)線程
    t1.start()
    t2.start()
    t3.start()
    #等待運(yùn)行結(jié)束
    t1.join()
    t2.join()
    t3.join()
    print(f'主線程結(jié)束時(shí)間:{time.strftime("%Y-%m-%d %H:%M:%S")}')

運(yùn)行結(jié)果如下所示:

主線程開(kāi)始時(shí)間:2018-07-06 23:03:46
線程名稱(chēng):Thread-1 參數(shù):3 開(kāi)始時(shí)間:2018-07-06 23:03:46
線程名稱(chēng):Thread-2 參數(shù):2 開(kāi)始時(shí)間:2018-07-06 23:03:46
線程名稱(chēng):Thread-3 參數(shù):1 開(kāi)始時(shí)間:2018-07-06 23:03:46
線程名稱(chēng):Thread-3 參數(shù):1 結(jié)束時(shí)間:2018-07-06 23:03:49
線程名稱(chēng):Thread-2 參數(shù):2 結(jié)束時(shí)間:2018-07-06 23:03:52
線程名稱(chēng):Thread-1 參數(shù):3 結(jié)束時(shí)間:2018-07-06 23:03:55
主線程結(jié)束時(shí)間:2018-07-06 23:03:55

方法二:繼承 Thread 類(lèi),在子類(lèi)中重寫(xiě) run() 和 init() 方法。

import time
import threading
class MyThread(threading.Thread):
    def __init__(self, counter):
        super().__init__()
        self.counter = counter
    def run(self):
        print(
            f'線程名稱(chēng):{threading.current_thread().name} 參數(shù):{self.counter} 開(kāi)始時(shí)間:{time.strftime
            ("%Y-%m-%d %H:%M:%S")}'
        )
        counter = self.counter
        while counter:
            time.sleep(3)
            counter -= 1
        print(
            f'線程名稱(chēng):{threading.current_thread().name} 參數(shù):{self.counter} 結(jié)束時(shí)間:{time.strftime
            ("%Y-%m-%d %H:%M:%S")}'
        )
if __name__ == "__main__":
    print(f'主線程開(kāi)始時(shí)間:{time.strftime("%Y-%m-%d %H:%M:%S")}')
    # 初始化3個(gè)線程,傳遞不同的參數(shù)
    t1 = MyThread(3)
    t2 = MyThread(2)
    t3 = MyThread(1)
    # 開(kāi)啟三個(gè)線程
    t1.start()
    t2.start()
    t3.start()
    # 等待運(yùn)行結(jié)束
    t1.join()
    t2.join()
    t3.join()
    print(f'主線程結(jié)束時(shí)間:{time.strftime("%Y-%m-%d %H:%M:%S")}')

運(yùn)行結(jié)果如下,與方法一的運(yùn)行結(jié)果一致。

主線程開(kāi)始時(shí)間:2018-07-06 23:34:16
線程名稱(chēng):Thread-1 參數(shù):3 開(kāi)始時(shí)間:2018-07-06 23:34:16
線程名稱(chēng):Thread-2 參數(shù):2 開(kāi)始時(shí)間:2018-07-06 23:34:16
線程名稱(chēng):Thread-3 參數(shù):1 開(kāi)始時(shí)間:2018-07-06 23:34:16
線程名稱(chēng):Thread-3 參數(shù):1 結(jié)束時(shí)間:2018-07-06 23:34:19
線程名稱(chēng):Thread-2 參數(shù):2 結(jié)束時(shí)間:2018-07-06 23:34:22
線程名稱(chēng):Thread-1 參數(shù):3 結(jié)束時(shí)間:2018-07-06 23:34:25
主線程結(jié)束時(shí)間:2018-07-06 23:34:25

如果繼承 Thread 類(lèi),想調(diào)用外部傳入函數(shù),代碼如下所示:

import time
import threading
def task_thread(counter):
      print(f'線程名稱(chēng):{threading.current_thread().name} 參數(shù):{counter} 開(kāi)始時(shí)間:{time.strftime("%Y-%m-%d 
      %H:%M:%S")}')
    num = counter
    while num:
        time.sleep(3)
        num -= 1
    print(f'線程名稱(chēng):{threading.current_thread().name} 參數(shù):{counter} 結(jié)束時(shí)間:{time.strftime("%Y-%m-%d 
    %H:%M:%S")}')
class MyThread(threading.Thread):
    def __init__(self, target, args):
        super().__init__()
        self.target = target
        self.args = args
    def run(self):
        self.target(*self.args)
if __name__ == "__main__":
    print(f'主線程開(kāi)始時(shí)間:{time.strftime("%Y-%m-%d %H:%M:%S")}')
    # 初始化3個(gè)線程,傳遞不同的參數(shù)
    t1 = MyThread(target=task_thread,args=(3,))
    t2 = MyThread(target=task_thread,args=(2,))
    t3 = MyThread(target=task_thread,args=(1,))
    # 開(kāi)啟三個(gè)線程
    t1.start()
    t2.start()
    t3.start()
    # 等待運(yùn)行結(jié)束
    t1.join()
    t2.join()
    t3.join()
    print(f'主線程結(jié)束時(shí)間:{time.strftime("%Y-%m-%d %H:%M:%S")}')

這樣就和方法一是相通的,實(shí)例化自定義的線程類(lèi),運(yùn)行結(jié)果不變。


網(wǎng)站標(biāo)題:創(chuàng)新互聯(lián)Python教程:python如何使用多線程
轉(zhuǎn)載來(lái)于:http://uogjgqi.cn/article/dhocjgc.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流