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

Python多線程的使用詳情

 更新時間:2022年04月11日 19:25:01   作者:程序員班長  
這篇文章主要介紹了Python多線程的使用詳情,線程之間執(zhí)行是無序的,cpu調(diào)度哪個線程就執(zhí)行哪個線程,下文相關(guān)介紹需要的小伙伴可以參考一下

一,實用方法

  • 1.線程之間執(zhí)行是無序的,cpu調(diào)度哪個線程就執(zhí)行哪個線程;
  • 2.主線程等待所有子線程結(jié)束后再結(jié)束,設(shè)置守護(hù)線程可以實現(xiàn)當(dāng)主線程結(jié)束時子線程立馬結(jié)束;
  • 3.設(shè)置守護(hù)線程:1.threading.Thread(daemon=True),2.線程對象.setDaemon(True);
  • 4.線程之間共享全局變量,存在資源競爭問題。
'''
線程之間執(zhí)行是無序的,cpu調(diào)度哪個線程就執(zhí)行哪個線程
主線程會等待所有子線程結(jié)束之后再結(jié)束,設(shè)置守護(hù)線程可以實現(xiàn)當(dāng)主線程結(jié)束時子線程立馬結(jié)束
設(shè)置守護(hù)線程:1.threading.Thread(daemon=True),2.線程對象.setDaemon(True)
線程之間共享全局變量,存在資源競爭問題
'''
?
?
# 導(dǎo)入模塊(模塊名.py,包名init.py)
import threading
import time
?
?
def task1(count):
? ? # 獲取當(dāng)前線程對象
? ? # t=threading.current_thread()
? ? # print('Task1_name:',t.name)
? ? print()
? ? for i in range(count):
? ? ? ? print('Task A ',i+1)
? ? ? ? time.sleep(0.5)
?
def task2(content,count):
? ? print('Task2_name:', threading.current_thread().name)
? ? for i in range(count):
? ? ? ? print(f'{content}__Task B ',i+1)
? ? ? ? time.sleep(0.5)
?
?
if __name__ == '__main__':
?
? ? t1=threading.Thread(target=task1,name='T1',daemon=True,args=(5,))
? ? t2=threading.Thread(target=task2,name='T2',kwargs={'content':'Yes','count':5})
? ? # 設(shè)置守護(hù)主線程的第二種方式
? ? # t1.setDaemon(True)
? ? t2.setDaemon(True)
? ? t1.start()
? ? t1.join() ? # 阻塞函數(shù),t1執(zhí)行完畢才會向下執(zhí)行
? ? t2.start()
? ? # t2.join()
? ? print('Main thread over')

二、補充:Python多線程共享變量資源競爭問題

  • 1.資源競爭問題:sum+=1執(zhí)行時大致會分為三步(取值、加1、寫回),可能剛執(zhí)行2步cpu就去切換到了另一個線程去執(zhí)行;
  • 2.解決辦法:1.使用join()方法來設(shè)置線程同步(效率不高),2.加鎖(可以保證同一時刻只有一個線程在執(zhí)行) 。
'''
資源競爭問題:sum+=1執(zhí)行時大致會分為三步(取值、加1、寫回),可能剛執(zhí)行2步cpu就去切換到了另一個線程去執(zhí)行
解決辦法:1.使用join()方法來設(shè)置線程同步(效率不高),2.加鎖(可以保證同一時刻只有一個線程在執(zhí)行)
'''
?
import threading
import time
?
?
sum=0
lock=threading.Lock()
?
def add_num1():
? ? global sum
? ? for i in range(1000000):
? ? ? ? # lock.acquire() ? ?# 加鎖
? ? ? ? sum+=1
? ? ? ? # lock.release() ? ?# 解鎖
? ? print(f'{threading.current_thread().name}的計算結(jié)果是{sum}')
?
?
def add_num2():
? ? global sum
? ? for i in range(1000000):
? ? ? ? # lock.acquire()
? ? ? ? sum+=1
? ? ? ? # lock.release()
? ? print(f'{threading.current_thread().name}的計算結(jié)果是{sum}')
?
if __name__ == '__main__':
? ? t1=threading.Thread(target=add_num1)
? ? t2=threading.Thread(target=add_num2)
? ? t1.start()
? ? # 設(shè)置阻塞函數(shù),設(shè)置線程同步
? ? t1.join()
? ? t2.start()
? ? print(f'Main的sum值是{sum}')

到此這篇關(guān)于Python多線程的使用詳情的文章就介紹到這了,更多相關(guān)Python多線程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python PyAutoGUI 模擬鼠標(biāo)鍵盤操作和截屏功能

    python PyAutoGUI 模擬鼠標(biāo)鍵盤操作和截屏功能

    一款跨平臺/無依賴的自動化測試工具,目測只能控制鼠標(biāo)/鍵盤/獲取屏幕尺寸/彈出消息框/截屏。這篇文章主要介紹了python PyAutoGUI 模擬鼠標(biāo)鍵盤操作和截屏功能,需要的朋友可以參考下
    2019-08-08
  • Python對圖像進(jìn)行灰度處理的代碼介紹

    Python對圖像進(jìn)行灰度處理的代碼介紹

    這篇文章主要給大家介紹了關(guān)于Python對圖像進(jìn)行灰度處理的相關(guān)資料,圖像灰度化是將一幅彩色圖像轉(zhuǎn)換為灰度化圖像的過程,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Python中tuple類型的使用

    Python中tuple類型的使用

    在Python中,元組(tuple)是一種不可變的序列類型,可以包含多個值,這些值可以是不同類型的,本文主要介紹了Python中tuple類型的使用,感興趣的可以了解一下
    2023-12-12
  • Python之基礎(chǔ)函數(shù)案例詳解

    Python之基礎(chǔ)函數(shù)案例詳解

    這篇文章主要介紹了Python之基礎(chǔ)函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Python GUI編程學(xué)習(xí)筆記之tkinter界面布局顯示詳解

    Python GUI編程學(xué)習(xí)筆記之tkinter界面布局顯示詳解

    這篇文章主要介紹了Python GUI編程學(xué)習(xí)筆記之tkinter界面布局顯示,結(jié)合實例形式分析了Python GUI編程中tkinter界面布局顯示的相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下
    2020-03-03
  • python2 對excel表格操作完整示例

    python2 對excel表格操作完整示例

    這篇文章主要介紹了python2 對excel表格操作,結(jié)合完整實例形式分析了Python2 操作Excel表格的讀取、寫入相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • Python開發(fā)工具Pycharm的安裝以及使用步驟總結(jié)

    Python開發(fā)工具Pycharm的安裝以及使用步驟總結(jié)

    今天給大家?guī)淼氖顷P(guān)于Python開發(fā)工具的安裝以及使用的相關(guān)知識,文章圍繞著如何使用和安裝Pycharm展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python天氣預(yù)報采集器實現(xiàn)代碼(網(wǎng)頁爬蟲)

    Python天氣預(yù)報采集器實現(xiàn)代碼(網(wǎng)頁爬蟲)

    這個天氣預(yù)報采集是從中國天氣網(wǎng)提取廣東省內(nèi)主要城市的天氣并回顯。本來是打算采集騰訊天氣的,但是貌似它的數(shù)據(jù)是用js寫上去還是什么的,得到的html文本中不包含數(shù)據(jù),所以就算了
    2012-10-10
  • 對python中Librosa的mfcc步驟詳解

    對python中Librosa的mfcc步驟詳解

    今天小編就為大家分享一篇對python中Librosa的mfcc步驟詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python?DataFrame中stack()方法、unstack()方法和pivot()方法淺析

    python?DataFrame中stack()方法、unstack()方法和pivot()方法淺析

    這篇文章主要給大家介紹了關(guān)于python?DataFrame中stack()方法、unstack()方法和pivot()方法的相關(guān)資料,pandas中這三種方法都是用來對表格進(jìn)行重排的,其中stack()是unstack()的逆操作,需要的朋友可以參考下
    2022-04-04

最新評論