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

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

淺談python多線(xiàn)程和多線(xiàn)程變量共享問(wèn)題介紹

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

1、demo

第一個(gè)代碼是多線(xiàn)程的簡(jiǎn)單使用,編寫(xiě)了線(xiàn)程如何執(zhí)行函數(shù)和類(lèi)。

import threadingimport timeclass ClassName(threading.Thread):'''創(chuàng)建類(lèi),通過(guò)多線(xiàn)程執(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()# 啟動(dòng)線(xiàn)程t1.start()t2.start()t.start()while True:length = len(threading.enumerate())print('正在運(yùn)行的線(xiàn)程有 %s' %threading.enumerate())if length <= 1:breaktime.sleep(1)if __name__ == ’__main__’:main()

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

2、多線(xiàn)程共享變量

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

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

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

淺談python多線(xiàn)程和多線(xiàn)程變量共享問(wèn)題介紹

3、資源競(jìng)爭(zhēng)

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

import threadingimport time# 定義全局變量g_num = 0def test1(num):'''函數(shù)test1對(duì)全局變量進(jìn)行更改'''global g_numfor i in range(num):g_num += 1print('test1 線(xiàn)程 g_num = %d---' % g_num)def test2(num):'''函數(shù)test2對(duì)全局變量進(jìn)行更改'''global g_numfor i in range(num):g_num += 1print('tes2 線(xiàn)程 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('主線(xiàn)程 g_num = %d---' % g_num)if __name__ == ’__main__’:main()

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

淺談python多線(xiàn)程和多線(xiàn)程變量共享問(wèn)題介紹

4、互斥鎖

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

import threadingimport time# 創(chuàng)建變量g_num = 0# 創(chuàng)建鎖默認(rèn)為開(kāi)鎖狀態(tài)mutex = threading.Lock()def test1(num):global g_numfor i in range(num):# 上鎖mutex.acquire()g_num += 1# 解鎖mutex.release()print('--- test1 線(xiàn)程 g_num = %d---' % g_num)def test2(num):global g_numfor i in range(num):# 上鎖mutex.acquire()g_num += 1# 解鎖mutex.release()print('--- test2 線(xiàn)程 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('--- 主線(xiàn)程 g_num = %d---' % g_num)if __name__ == ’__main__’:main()

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

淺談python多線(xiàn)程和多線(xiàn)程變量共享問(wèn)題介紹

5、死鎖

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

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

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

淺談python多線(xiàn)程和多線(xiàn)程變量共享問(wèn)題介紹

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

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品久久理论片| 精品日韩视频| 亚洲二区视频| 人在线成免费视频| 国产+成+人+亚洲欧洲在线| 久久福利在线| 69堂免费精品视频在线播放| 亚洲ww精品| 国产极品嫩模在线观看91精品| 精品高清久久| se01亚洲视频| 国产视频亚洲| 国产亚洲人成a在线v网站| 欧美激情五月| 国模精品一区| 久久精品国产www456c0m| 精品一区三区| 亚洲精品大全| 麻豆精品蜜桃视频网站| 色偷偷偷在线视频播放| 国产亚洲毛片在线| 国产精品magnet| 人人香蕉久久| 69堂免费精品视频在线播放| 麻豆国产欧美日韩综合精品二区| 久草免费在线视频| 91成人网在线观看| 亚洲+小说+欧美+激情+另类| 欧美激情福利| 色黄视频在线观看| 亚洲精一区二区三区| 激情黄产视频在线免费观看| 日韩中文字幕区一区有砖一区 | 丝袜美腿亚洲色图| 久久亚洲资源中文字| 999国产精品999久久久久久| 黄页网站一区| 97视频热人人精品免费| 亚洲精品女人| 欧美日韩精品免费观看视完整| 久久亚洲风情| 国产精品s色| 在线成人直播| 国产精品a久久久久| 亚洲精品伦理| 欧美va天堂| 91免费精品| 国产精品xxxav免费视频| 欧美中文日韩| 亚州av乱码久久精品蜜桃| 成人午夜网址| 欧美成人精品一级| 国产欧美三级| 久久的色偷偷| 国产精品美女久久久久久不卡| 一本一本久久| 爽好久久久欧美精品| 日韩av首页| 国产一区二区高清| 天堂久久av| 久久三级福利| 免费人成网站在线观看欧美高清| 91精品高清| 97se亚洲| 国产日韩欧美高清免费| 99热国内精品| 成人一区而且| 久久国产三级精品| 日韩高清不卡一区| 久久精品影视| 国产精品videosex极品| 国产在线视频欧美一区| 都市激情国产精品| 日韩精品一区二区三区免费视频 | 国产麻豆综合| 日韩中出av| 亚洲一区二区三区四区五区午夜| 国产调教一区二区三区| 国产一区调教| 亚洲精品极品| 蜜臀久久99精品久久久画质超高清| 三级久久三级久久久| 日韩一区二区免费看| 午夜av成人| 欧美激情亚洲| 国产一区调教| 超级白嫩亚洲国产第一| 97精品国产99久久久久久免费| 亚洲91视频| 另类综合日韩欧美亚洲| 亚洲欧美日本国产| 蜜臀av免费一区二区三区| 国产精品男女| 亚洲免费专区| aa亚洲婷婷| 亚洲黑丝一区二区| 国产中文在线播放| 九九99久久精品在免费线bt| 激情偷拍久久| 老司机精品在线| 深夜福利亚洲| 视频一区中文字幕| 99精品综合| 97国产成人高清在线观看| 国产黄色精品| 欧美日韩午夜电影网| 一区二区电影| 日韩中文字幕av电影| 国户精品久久久久久久久久久不卡| 国产不卡精品在线| 国产伦精品一区二区三区千人斩| 日韩精品欧美大片| 美女尤物久久精品| 久久av在线| 午夜av一区| 亚洲一级二级| 不卡av一区二区| 午夜欧美精品久久久久久久| 蜜桃视频欧美| 黄色日韩在线| 国产视频一区三区| 红桃视频亚洲| 夜夜嗨一区二区三区| 国产精品日本欧美一区二区三区| 欧美特黄视频| 亚洲欧美日韩在线观看a三区| 好吊日精品视频| 国产精品免费看| 亚洲精品乱码久久久久久蜜桃麻豆| 日本欧美韩国一区三区| 国产日韩欧美一区二区三区在线观看 | 久久国产免费| xxxxx性欧美特大| 99热精品在线| 亚洲精品日韩久久| 麻豆一区二区三| 青青草视频一区| 亚洲午夜久久久久久尤物| 国产精区一区二区| 精品国产a一区二区三区v免费| 久久久91麻豆精品国产一区| 亚洲欧美高清| 亚洲二区免费| 国产精品腿扒开做爽爽爽挤奶网站| 欧美国产偷国产精品三区| 久久麻豆精品| 99在线精品免费视频九九视 | 国产精品最新| 国产激情精品一区二区三区| 国产精品tv| 狠狠躁少妇一区二区三区| 欧美日中文字幕| 久久精品国语| 亚洲区第一页| 麻豆一区在线| 五月天综合网站| 日韩av三区| 麻豆mv在线观看| 先锋影音久久久| 国产精品欧美一区二区三区不卡| 国产91欧美| 91欧美在线| 久久免费福利| 亚洲综合三区| sm久久捆绑调教精品一区| 9久re热视频在线精品| 怡红院精品视频在线观看极品| 欧美福利在线| 国产精品久久乐| 日韩一级不卡| 国产亚洲精aa在线看| 国产不卡人人| 亚洲一区二区动漫| 日韩欧美视频专区| 电影亚洲精品噜噜在线观看| 91精品国产自产精品男人的天堂 | 综合亚洲视频| 美女性感视频久久| 成人国产精选| 九九综合九九| 日韩福利视频导航| 久久亚洲精精品中文字幕| 蜜桃av在线播放| 亚洲精一区二区三区| 精品在线网站观看| 久久久久中文| 日韩一区二区三区在线看| av在线日韩| 日韩精品久久久久久久软件91| 成人福利av| 亚洲精品成人一区| 国产美女高潮在线| 美国三级日本三级久久99| 日韩精品a在线观看91| 中文字幕在线官网| 日本不卡不码高清免费观看| 久久精品观看| 国产精品探花在线观看| 中文亚洲欧美| 精品免费av|