python,多線程(python多線程例子)

發(fā)布時(shí)間:2024-03-03
本文主要介紹python 多線程(python多線程示例),下面一起看看python 多線程(python多線程示例)相關(guān)資訊。
目錄1。什么是線程?二、啟動(dòng)線程的兩種。模式12。模式二。線程對(duì)象的jion方法4。補(bǔ)充小案5。守護(hù)線程6。線程互斥7。gtl-全球口譯員8。驗(yàn)證多線程和多線程應(yīng)用場(chǎng)景總結(jié):1。什么是線程?螺紋,顧名思義,就是流水線作業(yè)的過程。一條裝配線必須屬于一個(gè)車間,車間的工作過程就是一個(gè)過程。車間負(fù)責(zé)整合資源,是一個(gè)資源單元,一個(gè)車間至少有一條流水線。所以進(jìn)程只是用來把資源聚集在一起的(進(jìn)程只是一個(gè)資源單元,或者資源的集合),線程是cpu上的執(zhí)行單元。
總結(jié)流程和線程的區(qū)別:
?123456789101112131415 進(jìn)程:資源單元線程:執(zhí)行單元線程是真正做工作的人,工作中需要的資源由線程所在的進(jìn)程提供。每個(gè)進(jìn)程必須自帶線程,每個(gè)進(jìn)程中可以創(chuàng)建多個(gè)線程。打開一個(gè)進(jìn)程:申請(qǐng)空間復(fù)制代碼消耗資源。打開一個(gè)線程:在同一個(gè)進(jìn)程中創(chuàng)建多個(gè)線程是不必要的。資源消耗相對(duì)較小的多線程(即多個(gè)控制線程)的概念是,一個(gè)進(jìn)程中有多個(gè)控制線程,多個(gè)控制線程共享進(jìn)程的地址空間,相當(dāng)于一個(gè)車間里有多個(gè)流水線,都共享一個(gè)車間的資源。
二、啟動(dòng)線程的兩種。方法一?1234567891011213從線程導(dǎo)入線程導(dǎo)入時(shí)間#方法1 d:打印( %s正在運(yùn)行 % nam: d:#重寫別人 的方法和唐 不知道什么 在其他人身上。;的方法。調(diào)用父類 s方法sup:打印( %s正在運(yùn)行 % s: t = mythr:打印( %s正在運(yùn)行 % nam: t = thr:全局mon: t = thr:優(yōu)先級(jí)nt( ;child pideco 0-@ . com ;,os。g: t = thread(target = task,args =)t . startprint( ;主pid : ;,os.g: 13444,pid: 13444 ; 。
?1234567891011121314#這是一個(gè)來自線程導(dǎo)入thread,current _ thread,active _ countimportos,tim: print( ;兒子 ,curr: t = thread(target = task,args = (1,))t1 = thread (target = task,args = (1,))t . startt1 . startt . join# print( ;主 ,current_thread。name)# get thread name print(active _ count)# count當(dāng)前活動(dòng)進(jìn)程的數(shù)量 運(yùn)行結(jié)果:子線程-1子線程-21。; # 。
5.守護(hù)線程和守護(hù)進(jìn)程的概念是相似的。其實(shí)大家都能注意到,進(jìn)程和線程之間有很多知識(shí)點(diǎn),就是用法一樣,互相理解也差不多。
1.守護(hù)線程將隨著主線程的結(jié)束而結(jié)束。
2.主線程在運(yùn)行后不會(huì)立即結(jié)束,而是等待所有其他非守護(hù)線程結(jié)束。
3,因?yàn)橹骶€程的結(jié)束意味著進(jìn)程的結(jié)束。
?1234567891011從線程導(dǎo)入線程導(dǎo)入tim:打印( %s正在運(yùn)行 % nam: t = thr: print( ;1234 )time.sleep (1)打印( end 1234 ).def func:打印;5678 )tim: t1 = thread(target = foo,args = ) t2 = thread (target = func,args = ) t1。daemon = true # t1被設(shè)置為守護(hù)線程。t2是非守護(hù)線程t1 . startt2 . startprint( ;主要的... ) 運(yùn)行結(jié)果:12345678主...end1234end5678 因?yàn)橹骶€程將等待非守護(hù)線程完成運(yùn)行,所以所有主線程都將等待t2(非守護(hù)線程)。
六、線程互斥鎖當(dāng)多個(gè)線程操作同一數(shù)據(jù)時(shí),會(huì)出現(xiàn)數(shù)據(jù)混淆的問題。
針對(duì)以上問題,解決方法是加鎖處理。
?1234567891011121314151617181920 from threading導(dǎo)入線程,lock import time money = 100 mutex = lockd:全局money mutex . acquir: t _ list =[]for ii in rang: t = thr:為t追加(t)t . joinprint(money)#運(yùn)行結(jié)果:0#多人操作同一個(gè)數(shù)據(jù),數(shù)據(jù)是無序的,所以被鎖定。
七、gtl-全局解釋器我相信所有學(xué)python的朋友都知道python解釋器其實(shí)有多個(gè)版本。
cpython jpython pypython,但是常用的cpython解釋器。
gil是cpython解釋器中的互斥鎖,用于防止同一進(jìn)程中的多個(gè)線程同時(shí)執(zhí)行。
注意,同一個(gè)進(jìn)程中的多個(gè)線程不能利用多核?。。。?br>想必大家都有很多疑惑 的頭腦:是pyhon s多線程沒用????
因?yàn)閏python中的內(nèi)存管理不是線程安全的。多線程不是沒用的。當(dāng)遇到多io操作時(shí),多核的優(yōu)勢(shì)就體現(xiàn)不出來了。多進(jìn)程和多線程的效率在這種情況下差別不大。這時(shí)候多進(jìn)程相對(duì)浪費(fèi)資源,多線程更節(jié)省資源。
ps:內(nèi)存管理是垃圾收集機(jī)制;
1.引用計(jì)數(shù)
2.標(biāo)記移除
3.分區(qū)和回收
?123456# gtl-環(huán)球口譯#要點(diǎn):1 .gil不是python的一個(gè)特性,而是cpython解釋器# 2的一個(gè)特性。gil確保解釋器級(jí)數(shù)據(jù)# 3的安全性。gil會(huì)導(dǎo)致同一個(gè)進(jìn)程中的多個(gè)線程無法同時(shí)運(yùn)行(即無法利用多核)# 4。不同的數(shù)據(jù)需要不同的鎖# 5。解釋語(yǔ)言的常見問題。
八、驗(yàn)證多線程和多線程應(yīng)用場(chǎng)景?1234567891011121314151617181920 #計(jì)算密集型(cpu一直在工作,沒有io)(更適合多進(jìn)程)從多處理導(dǎo)入進(jìn)程從線程導(dǎo)入線程導(dǎo)入os,時(shí)間#多進(jìn)程情況d: r: r: l =[]print(os。cpu _ count ) #獲取當(dāng)前計(jì)算機(jī)的cpu核心號(hào)start _ tim:#我的電腦是8核p = proc: p . joinprint(tim: r: r: l =[]print(os。cpu _ count ) #獲取當(dāng)前計(jì)算機(jī)的cpu核心號(hào)start _ tim:#我的電腦是8核t = thr: p . joinprint(tim: tim: l =[]start _ tim: t = thr: p . joinprint(tim: tim: l =[]start _ tim: p = process(target = work,args=) # t=thread(target=work,args =)# t . start# l . append(t)p . startl . append(p)for echo 0-@中ptime -start _ time) #運(yùn)行結(jié)果:5 #
總結(jié):多線程和多處理各有優(yōu)勢(shì)。
而在后期的項(xiàng)目中,通??梢栽诙鄠€(gè)進(jìn)程下設(shè)置多個(gè)線程。
這樣就可以利用多核,節(jié)約資源。
那個(gè) 本文到此為止,希望能幫到你,也希望你能多關(guān)注劇本之家更多內(nèi)容!
你可能會(huì)對(duì):這篇文章感興趣你知道python多線程中的定時(shí)器嗎?python多線程可以這樣解釋。python多線程的詳細(xì)描述顯示了對(duì)python多線程基礎(chǔ)的深刻理解。python多線程方法的詳細(xì)描述:
線程進(jìn)程
了解更多python 多線程(python多線程示例)相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。
上一個(gè):美國(guó)gf流量傳感器
下一個(gè):建筑工程資格預(yù)審的作用實(shí)質(zhì),你該了解!

在手機(jī)上如何看u盤,如何在手機(jī)上看到自己的電話號(hào)碼
windows10我的電腦圖標(biāo)沒了怎么辦(w10電腦上我的電腦圖標(biāo)沒了怎么辦)
阿里巴巴云服務(wù)器哪家好
古樹普洱茶乃茶中瑰寶
自己申請(qǐng)域名步驟是怎樣的 域名注冊(cè)需要哪些條件
遠(yuǎn)程服務(wù)器租用相關(guān)云計(jì)算內(nèi)容
win7系統(tǒng)中的運(yùn)行在哪找(Win7運(yùn)行在哪)
移動(dòng)硬盤摔了能修嗎
RC1206DR-0716K2L,1206 16.2KΩ 0.5%電阻
飲食禮儀之蓋碗茶的喝法
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos