欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python的多線程原來(lái)可以這樣解

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

多線程

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

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

創(chuàng)建線程

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

創(chuàng)建線程的兩種方法
繼承Thread類(lèi),并重寫(xiě)它的run()方法
import threading
import time
cLass MyThread(threading.Thread):
	def__ init__ (seLf, n):
		super (MyThread, seLf).__ init__()
		self.n = n
	def run(self):
		print('以類(lèi)的方式創(chuàng)建多線程',self.n)
		time.sleep(3)
r1 = MyThread(1)
r2 = MyThread(2)
r1.start()
r2.start()
調(diào)用threading庫(kù)的Thread類(lèi)
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ù)線程此類(lèi)線程的特點(diǎn)是,當(dāng)程序中主線程及所有非守護(hù)線程執(zhí)行結(jié)束時(shí),未執(zhí)行完畢的守護(hù)線程也會(huì)隨之消亡(進(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() #申請(qǐng)鎖
    x+=1 
    lock.release() #釋放鎖
if __name__=='__main__':
    x=0
    res=[]
    lock=threading.Lock() #實(shí)例化線程鎖
    for i in range(100): #100個(gè)線程
        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)入時(shí)間模塊

#線程一:輸出當(dāng)前的年月日時(shí)分秒
class myThread1(threading.Thread):
    def run(self):
        while (True):
            print(time.asctime(time.localtime(time.time())))#輸出實(shí)時(shí)時(shí)間
            time.sleep(1)
#線程二:name每2秒打印輸出4次結(jié)束
class myThread2(threading.Thread):#繼承threading.Thread
    def __init__(self,name):#繼承父類(lèi)的方法實(shí)現(xiàn)繼承threading.Thread       
        super(myThread2, self).__init__()#super方法調(diào)用父類(lèi)
        self.name=name #實(shí)例化對(duì)象屬性    
    def run(self):#重寫(xiě)Thread類(lèi)中的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("張三")
    #開(kāi)啟線程
    x1.start()
    x2.start()

總結(jié)

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

相關(guān)文章

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

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

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

    淺談openpyxl庫(kù),遇到批量合并單元格的問(wèn)題

    這篇文章主要介紹了淺談openpyxl庫(kù),遇到批量合并單元格的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Pytest接口自動(dòng)化測(cè)試框架搭建模板

    Pytest接口自動(dòng)化測(cè)試框架搭建模板

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

    完美解決Python matplotlib繪圖時(shí)漢字顯示不正常的問(wèn)題

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

    python打包多類(lèi)型文件的操作方法

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

    Python中方法鏈的使用方法

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

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

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

    Python使用pyecharts控件繪制圖表

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

    Keras目標(biāo)檢測(cè)mtcnn?facenet搭建人臉識(shí)別平臺(tái)

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

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

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

最新評(píng)論