日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

淺談python多線程和多線程變量共享問題介紹

瀏覽:250日期:2022-07-29 16:11:28

1、demo

第一個代碼是多線程的簡單使用,編寫了線程如何執(zhí)行函數(shù)和類。

import threadingimport timeclass ClassName(threading.Thread):'''創(chuàng)建類,通過多線程執(zhí)行'''def run(self):for i in range(5):print(i)time.sleep(1)def sing():for i in range(1,11):print('唱歌第 %d 遍' % i)time.sleep(1)def dance():for i in range(1,16):print('跳舞第 %d 遍' % i)time.sleep(1)def main():t1 = threading.Thread(target = sing)t2 = threading.Thread(target = dance)t = ClassName()# 啟動線程t1.start()t2.start()t.start()while True:length = len(threading.enumerate())print('正在運(yùn)行的線程有 %s' %threading.enumerate())if length <= 1:breaktime.sleep(1)if __name__ == ’__main__’:main()

執(zhí)行結(jié)果可以看到函數(shù) sing、dance和類在同時執(zhí)行,執(zhí)行效果太長就不方截圖了

2、多線程共享變量

通過定義全局變量,然后再test1函數(shù)類部進(jìn)行更改全局變量,test2打印全局變量。

import threadingimport time#定義全局變量g_num = 0def test1():'''函數(shù)test1對全局變量進(jìn)行更改'''global g_numfor i in range(1,10):g_num += 1print('--- test1 線程 g_num = %d--- ' % g_num)def test2():'''函數(shù)test2 打印全局變量'''print('--- test2 線程 g_num = %d--- ' % g_num)def main():t1 = threading.Thread(target=test1)t2 = threading.Thread(target=test2)# 啟動線程t1.start()# 增加睡眠是為了保證優(yōu)先執(zhí)行函數(shù)test1time.sleep(1)t2.start()print('--- 主線程 g_num = %d--- ' % g_num)if __name__ == ’__main__’:main()

執(zhí)行結(jié)果可以看出,在主線程和創(chuàng)建的兩個線程中讀取的是一樣的值,既可以表明在多線程中變量共享

淺談python多線程和多線程變量共享問題介紹

3、資源競爭

在多線程兩個函數(shù)中同時更改一個變量時,由于cpu的計算能力,當(dāng)修改參數(shù)的代碼塊無法一次性執(zhí)行完成時,就會產(chǎn)生資源競爭

import threadingimport time# 定義全局變量g_num = 0def test1(num):'''函數(shù)test1對全局變量進(jìn)行更改'''global g_numfor i in range(num):g_num += 1print('test1 線程 g_num = %d---' % g_num)def test2(num):'''函數(shù)test2對全局變量進(jìn)行更改'''global g_numfor i in range(num):g_num += 1print('tes2 線程 g_num = %d---' % g_num)def main():t1 = threading.Thread(target=test1, args=(1000000, ))t2 = threading.Thread(target=test2, args=(1000000, ))t1.start()t2.start()time.sleep(1)print('主線程 g_num = %d---' % g_num)if __name__ == ’__main__’:main()

可以先試試傳遞參數(shù)為100時,可以看到g_num = 200 這是因為函數(shù)代碼可以一次性執(zhí)行完成,當(dāng)參數(shù)為1000000時代碼無法一次性執(zhí)行完成,g_num!= 2000000

淺談python多線程和多線程變量共享問題介紹

4、互斥鎖

互斥鎖可以解決資源競爭的問題,原理很簡單,通過對代碼塊上鎖,保證該代碼執(zhí)行完成前,其它代碼無法進(jìn)行修改。執(zhí)行完成后解鎖,其它代碼就可以執(zhí)行了。

import threadingimport time# 創(chuàng)建變量g_num = 0# 創(chuàng)建鎖默認(rèn)為開鎖狀態(tài)mutex = threading.Lock()def test1(num):global g_numfor i in range(num):# 上鎖mutex.acquire()g_num += 1# 解鎖mutex.release()print('--- test1 線程 g_num = %d---' % g_num)def test2(num):global g_numfor i in range(num):# 上鎖mutex.acquire()g_num += 1# 解鎖mutex.release()print('--- test2 線程 g_num = %d---' % g_num)def main():t1 = threading.Thread(target=test1, args=(1000000, ))t2 = threading.Thread(target=test2, args=(1000000, ))t1.start()t2.start()time.sleep(1)print('--- 主線程 g_num = %d---' % g_num)if __name__ == ’__main__’:main()

可以看到加了鎖之后,代碼執(zhí)行不會出現(xiàn)資源競爭,結(jié)果也是正常的。互斥鎖,上鎖的代碼越少越好。

淺談python多線程和多線程變量共享問題介紹

5、死鎖

當(dāng)出現(xiàn)多個鎖時,就可能會產(chǎn)生死鎖這個情況。當(dāng)關(guān)閉一個鎖時,這個鎖已經(jīng)為關(guān)閉狀態(tài)的話,程序就會阻塞。就如同下面這個代碼中。函數(shù)test1關(guān)閉mutexB鎖時,函數(shù)test2提前將其關(guān)閉了,未進(jìn)行解鎖,程序就會一直阻塞。

import threadingimport time# 創(chuàng)建兩個鎖A, BmutexA = threading.Lock()mutexB = threading.Lock()def test1():# 對muctexA上鎖mutexA.acquire()# mutexA上鎖后,延時1秒,等待mutexB上鎖print('test1 ---do1---up---')time.sleep(1)# 此時會堵塞,因為mutexB已經(jīng)上鎖mutexB.acquire()print('test1 ---do1---down---')mutexB.release()# 對mutexA解鎖mutexA.release()def test2():# 對muctexB上鎖mutexB.acquire()# mutexB上鎖后,延時1秒,等待mutexA上鎖print('test2 ---do1---up---')time.sleep(1)# 此時會堵塞,因為mutexB已經(jīng)上鎖mutexA.acquire()print('test2 ---do1---down---')mutexA.release()# 對mutexA解鎖mutexB.release()def main():t1 = threading.Thread(target=test1)t2 = threading.Thread(target=test2)t1.start()t2.start()if __name__ == ’__main__’:main()

代碼執(zhí)行效果可以看到程序會一直阻塞解決方法1、在程序編寫時,就需要注意避免死鎖2、可以參考銀行家算法

淺談python多線程和多線程變量共享問題介紹

到此這篇關(guān)于淺談python多線程和多線程變量共享問題介紹的文章就介紹到這了,更多相關(guān)python 多線程變量共享內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
五月精品视频| 国产 日韩 欧美一区| 亚洲成人二区| 久久久人人人| 国产精品av一区二区| 欧美搞黄网站| 久久成人国产| 亚洲精品少妇| 日韩精品免费视频一区二区三区 | 精品国产乱码| 久久在线91| 成人在线视频中文字幕| 日韩国产欧美一区二区| 欧美亚洲国产精品久久| 欧美在线亚洲| 三级久久三级久久久| 欧美久久亚洲| 国产一区二区精品久| 99成人在线视频| 男女精品网站| 日韩欧美在线精品| 国产精品99久久免费观看| 国产一区一一区高清不卡| 久久久9色精品国产一区二区三区| 五月综合激情| 视频一区中文字幕精品| 国产欧美二区| 亚洲一级少妇| 国产精品嫩草99av在线| 青草久久视频| 国产精品原创| 国产精品婷婷| 久久国产婷婷国产香蕉| 91视频一区| 亚洲一区欧美二区| 日本在线成人| 成人在线视频免费| 日韩一区二区久久| 国产精品伊人| 亚洲一级高清| 日韩欧美久久| 精品网站999| 欧洲激情综合| 国产亚洲高清在线观看| 久久激情网站| 欧美日韩亚洲一区三区| 色偷偷色偷偷色偷偷在线视频| 国产亚洲精品v| 国产日产一区| 欧美特黄视频| 国产亚洲第一伦理第一区| 色吊丝一区二区| 日本视频一区二区| 久久婷婷丁香| 国产日产一区| 9色精品在线| 精品国产乱码| 国产综合激情| 久久av电影| 欧美午夜不卡影院在线观看完整版免费| 老牛国内精品亚洲成av人片| 午夜精品影院| 成人亚洲一区| 亚洲1区在线观看| 超碰超碰人人人人精品| 欧美午夜不卡影院在线观看完整版免费| 国产乱人伦丫前精品视频| 欧美69视频| 精品视频97| 日本三级亚洲精品| 中文欧美日韩| 91欧美在线| 欧美日韩亚洲一区二区三区在线 | av在线最新| 久久狠狠亚洲综合| 巨乳诱惑日韩免费av| 欧美精品资源| 欧美韩一区二区| 在线亚洲国产精品网站| 美女av一区| 日本不卡高清| 婷婷激情图片久久| 成人一区不卡| 久久99影视| 日韩av字幕| 亚洲一区二区小说| 亚洲大全视频| 麻豆精品蜜桃| 日本一区二区高清不卡| 国产乱人伦丫前精品视频| 蜜臀久久99精品久久久画质超高清 | 日韩精品1区2区3区| 欧美不卡视频| 欧美片第1页| 国产福利91精品一区二区| 欧美精品国产白浆久久久久| 男女性色大片免费观看一区二区| 亚洲二区视频| 成人日韩精品| 国产91在线精品| 国产精品任我爽爆在线播放 | 久久亚洲精精品中文字幕| 日本不卡一二三区黄网| 一区二区亚洲视频| 丝袜脚交一区二区| 91精品观看| 91精品观看| 婷婷精品进入| 精品中文一区| 99久久久久国产精品| 国产一区二区三区四区大秀| 久久99久久久精品欧美| 国产午夜久久av| 欧美午夜三级| 欧美精品国产| 88久久精品| 日本一区二区三区视频在线看| 视频一区二区不卡| 中文亚洲免费| 视频一区二区三区中文字幕| aⅴ色国产欧美| 蜜臀av一区二区三区| 一区二区亚洲视频| 日韩三区四区| 日本欧美大码aⅴ在线播放| 青青在线精品| 日韩有吗在线观看| 日本午夜精品视频在线观看| 91欧美极品| 欧美黄色一区二区| 精品国产一区二区三区噜噜噜| 精品视频一区二区三区四区五区| 国产精品对白| 成人台湾亚洲精品一区二区| 国产精品yjizz视频网| 欧美精品资源| 99国产精品久久久久久久| 久久国产精品久久w女人spa| 亚洲精品人人| 国产精品一区二区三区美女 | 色老板在线视频一区二区| 久久激情中文| 久久xxxx精品视频| 久久精品av麻豆的观看方式| 久久精品二区亚洲w码| 伊伊综合在线| 在线综合亚洲| 日本不卡一二三区黄网| 国产探花一区二区| 欧美激情视频一区二区三区免费 | 国产精品久久久久久av公交车| 国产精品白丝一区二区三区| 国产一区二区三区视频在线| 成人午夜国产| 日韩中文字幕麻豆| 久久精品99国产国产精| 日韩不卡一区| 一本一本久久| 国产精品一页| 亚洲精品.com| 亚洲欧美日韩专区| 国产精品视频一区二区三区四蜜臂 | 国产精品一区二区美女视频免费看 | 老司机免费视频一区二区| 午夜影院一区| 国产免费成人| 蜜桃精品在线| 亚洲综合福利| www.51av欧美视频 | 久久国产电影| 日韩一区二区三区高清在线观看| 老司机免费视频一区二区| 欧美日韩国产一区二区三区不卡| 日本精品一区二区三区在线观看视频| 亚洲永久字幕| 国产精品任我爽爆在线播放| 久久蜜桃资源一区二区老牛| 亚洲精选久久| 日本美女一区| 蜜臀久久99精品久久久画质超高清 | 狂野欧美性猛交xxxx| 免费av一区二区三区四区| 免费成人在线视频观看| 久久中文欧美| 亚洲欧洲另类| 免费在线播放第一区高清av| 国产综合欧美| 国产精品日本一区二区不卡视频 | 日韩av中文字幕一区| 伊伊综合在线| 国产一卡不卡| 欧美91视频| 久久精品网址| 午夜久久av| 久久精选视频| 国产精品66| 欧美日韩国产传媒| 麻豆国产91在线播放| 男女激情视频一区| 香蕉视频亚洲一级|