亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python的多線程原來可以這樣解

 更新時間:2022年01月09日 17:06:58   作者:lijin111222  
這篇文章主要為大家介紹了python的多線程,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

多線程

多線程類似于同時執(zhí)行多個不同程序,多線程運(yùn)行有如下優(yōu)點(diǎn):

使用線程可以把占據(jù)長時間的程序中的任務(wù)放到后臺去處理。
用戶界面可以更加吸引人,比如用戶點(diǎn)擊了一個按鈕去觸發(fā)某些事件的處理,可以彈出一個進(jìn)度條來顯示處理的進(jìn)度。
程序的運(yùn)行速度可能加快。
在一些等待的任務(wù)實(shí)現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,線程就比較有用了。在這種情況下我們可以釋放一些珍貴的資源如內(nèi)存占用等等。

創(chuàng)建線程

一個進(jìn)程里面必然有一個主線程。

創(chuàng)建線程的兩種方法
繼承Thread類,并重寫它的run()方法
import threading
import time
cLass MyThread(threading.Thread):
	def__ init__ (seLf, n):
		super (MyThread, seLf).__ init__()
		self.n = n
	def run(self):
		print('以類的方式創(chuàng)建多線程',self.n)
		time.sleep(3)
r1 = MyThread(1)
r2 = MyThread(2)
r1.start()
r2.start()
調(diào)用threading庫的Thread類
import threading
import time
def test(x):
    print(x)
    time.sleep(2)
if __name__=='__main__':
    t1 = threading.Thread(target=test, args=(1,))  
    t2 = threading.Thread(target=test, args=(2,))
    t1.start()
    t2.start()

守護(hù)線程此類線程的特點(diǎn)是,當(dāng)程序中主線程及所有非守護(hù)線程執(zhí)行結(jié)束時,未執(zhí)行完畢的守護(hù)線程也會隨之消亡(進(jìn)行死亡狀態(tài)),程序?qū)⒔Y(jié)束運(yùn)行。

#守護(hù)線程
import threading
import time
def run(n):
    print('task',n)
    time.sleep(1)
    print('3s')
    time.sleep(1)
    print('2s')
    time.sleep(1)
    print('1s')
if __name__ == '__main__': #主線程
    t=threading.Thread(target=run,args=('t1',))
    t.setDaemon(True) #設(shè)置子線程為守護(hù)線程,守護(hù)主線程。主線程結(jié)束,子線程也立馬結(jié)束。必須在start() 方法調(diào)用之前設(shè)置
    t.start()
    print('end')

線程鎖

1.互斥鎖

#互斥鎖
import threading
def run():
    global x
    lock.acquire() #申請鎖
    x+=1 
    lock.release() #釋放鎖
if __name__=='__main__':
    x=0
    res=[]
    lock=threading.Lock() #實(shí)例化線程鎖
    for i in range(100): #100個線程
        t=threading.Thread(target=run) 
        t.start()
        res.append(t)
    for t in res:
        t.join()    
    print(x) 
2.遞歸鎖

import threading
def func(lock):
    global gl_num
    lock.acquire()
    gl_num += 1
    time.sleep(1)
    print(gl_num)
    lock.release()
if __name__ == '__main__':
    gl_num = 0
    lock = threading.RLock()
    for i in range(10):
       t = threading.Thread(target=func,args=(lock,))
       t.start()

練手:

import threading
import time  #導(dǎo)入時間模塊

#線程一:輸出當(dāng)前的年月日時分秒
class myThread1(threading.Thread):
    def run(self):
        while (True):
            print(time.asctime(time.localtime(time.time())))#輸出實(shí)時時間
            time.sleep(1)
#線程二:name每2秒打印輸出4次結(jié)束
class myThread2(threading.Thread):#繼承threading.Thread
    def __init__(self,name):#繼承父類的方法實(shí)現(xiàn)繼承threading.Thread       
        super(myThread2, self).__init__()#super方法調(diào)用父類
        self.name=name #實(shí)例化對象屬性    
    def run(self):#重寫Thread類中的run方法
        for i in range(4):#for循環(huán)打印4次
            print(self.name)          
            time.sleep(2)#打印一次delay兩秒
if __name__ == '__main__':
    #創(chuàng)建線程1和線程2并傳入?yún)?shù)
    x1 = myThread1()
    x2 = myThread2("張三")
    #開啟線程
    x1.start()
    x2.start()

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Python語法def語句及復(fù)雜用法實(shí)例探究

    Python語法def語句及復(fù)雜用法實(shí)例探究

    在 Python 中,def?是用于定義函數(shù)的關(guān)鍵字,本文將深入介紹def的用法和特點(diǎn),詳細(xì)說明如何定義函數(shù)、傳遞參數(shù)、返回值以及更復(fù)雜的用法
    2024-01-01
  • 淺談openpyxl庫,遇到批量合并單元格的問題

    淺談openpyxl庫,遇到批量合并單元格的問題

    這篇文章主要介紹了淺談openpyxl庫,遇到批量合并單元格的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Pytest接口自動化測試框架搭建模板

    Pytest接口自動化測試框架搭建模板

    這篇文章主要介紹了Pytest接口自動化測試框架搭建模板,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 完美解決Python matplotlib繪圖時漢字顯示不正常的問題

    完美解決Python matplotlib繪圖時漢字顯示不正常的問題

    今天小編就為大家分享一篇完美解決Python matplotlib繪圖時漢字顯示不正常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python打包多類型文件的操作方法

    python打包多類型文件的操作方法

    這篇文章主要介紹了python打包多類型文件的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Python中方法鏈的使用方法

    Python中方法鏈的使用方法

    這篇文章主要為大家詳細(xì)介紹了Python中方法鏈的使用方法,方法鏈(method chaining)是面向?qū)ο蟮木幊陶Z言中的一種常見語法,對方法鏈感興趣的小伙伴們可以參考一下
    2016-02-02
  • python刪除字符串中指定字符的方法

    python刪除字符串中指定字符的方法

    這篇文章主要介紹了python刪除字符串中指定字符的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Python使用pyecharts控件繪制圖表

    Python使用pyecharts控件繪制圖表

    這篇文章介紹了Python使用pyecharts控件繪制圖表的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Keras目標(biāo)檢測mtcnn?facenet搭建人臉識別平臺

    Keras目標(biāo)檢測mtcnn?facenet搭建人臉識別平臺

    這篇文章主要為大家介紹了Keras目標(biāo)檢測mtcnn?facenet搭建人臉識別平臺,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 淺談python類屬性的訪問、設(shè)置和刪除方法

    淺談python類屬性的訪問、設(shè)置和刪除方法

    下面小編就為大家?guī)硪黄獪\談python類屬性的訪問、設(shè)置和刪除方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07

最新評論