国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 常見問題 python線程池與多線程的區(qū)別

python線程池與多線程的區(qū)別

Jun 20, 2023 pm 04:51 PM
python線程池

python線程池與多線程的區(qū)別:1、線程在進(jìn)程下行進(jìn);2、線程在進(jìn)程下行進(jìn);3、一個(gè)進(jìn)程可以包含多個(gè)線程;4、不同進(jìn)程間數(shù)據(jù)很難共享;5、進(jìn)程要比線程消耗更多的計(jì)算機(jī)資源。

python線程池與多線程的區(qū)別

一. 線程與多線程

進(jìn)程: 一個(gè)程序執(zhí)行時(shí),可以稱之為一個(gè)進(jìn)程,其包含運(yùn)行中的程序和程序所使用的內(nèi)存和系統(tǒng)資源.一個(gè)進(jìn)程由多個(gè)線程所組成.

線程: 線程是程序中的一個(gè)執(zhí)行流,每個(gè)線程都有自己的專有寄存器,同時(shí)代碼區(qū)是共享的.不同的線程可以執(zhí)行同樣的函數(shù).

多線程: 多線程是指程序中包含多個(gè)執(zhí)行流,也即是一個(gè)程序中可以同時(shí)運(yùn)行多個(gè)不同的線程來(lái)執(zhí)行不同的任務(wù),允許單個(gè)程序創(chuàng)建多個(gè)并行執(zhí)行的線程來(lái)完成各自的任務(wù).

多線程最大的好處: 提高CPU利用率( 尤其適用于 I/O密集型程序 , 速度提升特別明顯)

進(jìn)程與線程的區(qū)別:

做個(gè)簡(jiǎn)單的比喻:進(jìn)程=火車,線程=車廂

線程在進(jìn)程下行進(jìn)(單純的車廂無(wú)法運(yùn)行)

一個(gè)進(jìn)程可以包含多個(gè)線程(一輛火車可以有多個(gè)車廂)

不同進(jìn)程間數(shù)據(jù)很難共享(一輛火車上的乘客很難換到另外一輛火車,比如站點(diǎn)換乘)

同一進(jìn)程下不同線程間數(shù)據(jù)很易共享(A車廂換到B車廂很容易)

進(jìn)程要比線程消耗更多的計(jì)算機(jī)資源(采用多列火車相比多個(gè)車廂更耗資源)

進(jìn)程間不會(huì)相互影響,一個(gè)線程掛掉將導(dǎo)致整個(gè)進(jìn)程掛掉(一列火車不會(huì)影響到另外一列火車,但是如果一列火車上中間的一節(jié)車廂著火了,將影響到所有車廂)

進(jìn)程可以拓展到多機(jī),進(jìn)程最多適合多核(不同火車可以開在多個(gè)軌道上,同一火車的車廂不能在行進(jìn)的不同的軌道上)

進(jìn)程使用的內(nèi)存地址可以上鎖,即一個(gè)線程使用某些共享內(nèi)存時(shí),其他線程必須等它結(jié)束,才能使用這一塊內(nèi)存。(比如火車上的洗手間)-"互斥鎖"

進(jìn)程使用的內(nèi)存地址可以限定使用量(比如火車上的餐廳,最多只允許多少人進(jìn)入,如果滿了需要在門口等,等有人出來(lái)了才能進(jìn)去)-“信號(hào)量”

二. 多線程之 threading 類

threading類是最常用的多線程模塊.創(chuàng)建線程的方法如下代碼:

threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, 
daemon=None)

group:默認(rèn)為None.

target:要執(zhí)行的函數(shù)名, 記得不要帶函數(shù)的括號(hào).

name:線程名稱,默認(rèn)為'Thread-N'形式.

args:在參數(shù)target中傳入的可調(diào)用對(duì)象的參數(shù)元組.

kwargs:在參數(shù)target中傳入的可調(diào)用對(duì)象的關(guān)鍵字參數(shù)字典.

daemon:守護(hù)模式屬性,默認(rèn)為None.

線程對(duì)象的重要方法:

start(): 開啟線程.它將使得run()方法在一個(gè)獨(dú)立的線程中被調(diào)用.

run(): 此方法代表線程活動(dòng).

join(timeout=None): 讓當(dāng)前調(diào)用者線程等待,直到線程結(jié)束.

daemon: 表示該線程是否為守護(hù)線程, True或者False.

創(chuàng)建多線程實(shí)例:

import random
import threading
import time
def awesome_function(name):
wait_time = random.randint(1, 10)
print('current thread name is :{0} and wait {1} s'.format(name, 
wait_time))
time.sleep(wait_time)
print('thread {} finished.'.format(name))
if __name__ == '__main__':
for i in range(0, 3):
t = threading.Thread(target=awesome_function, args=(i,))
t.start()

可以先看一下我錄制的運(yùn)行結(jié)果:

上面例子開啟了3個(gè)線程,3個(gè)線程并發(fā)執(zhí)行任務(wù),先完成任務(wù)的線程(time.sleep最短的)先輸出結(jié)果.

三. 更好用的線程池類ThreadPoolExecutor

啟動(dòng)一個(gè)新線程的開銷非常大,因?yàn)樗婕芭c操作系統(tǒng)的交互.在這種情況下,使用線程池可以很好地提升程序性能,尤其是當(dāng)程序中需要?jiǎng)?chuàng)建大量生存期很短暫的線程時(shí)更應(yīng)該考慮使用線程池.

線程池在系統(tǒng)啟動(dòng)時(shí)即創(chuàng)建大量空閑的線程,程序只要將一個(gè)函數(shù)提交給線程池,線程池就會(huì)啟動(dòng)一個(gè)空閑的線程來(lái)執(zhí)行它.當(dāng)該函數(shù)執(zhí)行結(jié)束后,該線程并不會(huì)死亡,而是再次返回到線程池中變成空閑狀態(tài),等待下一個(gè)函數(shù).同時(shí),使用線程池可以有效地控制系統(tǒng)中并發(fā)線程的數(shù)量.當(dāng)系統(tǒng)中包含有大量的并發(fā)線程時(shí),會(huì)導(dǎo)致系統(tǒng)性能急劇下降,甚至導(dǎo)致Python解釋器崩潰,而線程池的最大線程數(shù)參數(shù)可以控制系統(tǒng)中并發(fā)線程的數(shù)量不超過(guò)此數(shù).

現(xiàn)在主流使用的線程池是concurrent.futures模塊中的ThreadPoolExecutor:

import random
import time
from concurrent.futures import ThreadPoolExecutor
def awesome_function(name):
wait_time = random.randint(1, 10)
print('current thread name is :{0} and wait {1} s'.format(name, 
wait_time))
time.sleep(wait_time)
print('thread {} finished.'.format(name))
if __name__ == '__main__':
with ThreadPoolExecutor(max_workers=3) as t:
for i in range(0, 3):
t.submit(awesome_function, i)

運(yùn)行結(jié)果錄制如下:

創(chuàng)建一個(gè)最大容納數(shù)量為3的線程池對(duì)象,通過(guò)submit提交執(zhí)行的函數(shù)到線程池中,若線程池中的某個(gè)線程(thread 2)執(zhí)行完成,則把空閑的線程(thread 3)放入到池子中,依次類推,直到所有線程執(zhí)行完成則程序結(jié)束。

以上是python線程池與多線程的區(qū)別的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
如何創(chuàng)建系統(tǒng)還原點(diǎn) 如何創(chuàng)建系統(tǒng)還原點(diǎn) Jul 07, 2025 am 12:17 AM

系統(tǒng)還原點(diǎn)設(shè)置方法包括手動(dòng)創(chuàng)建、依賴自動(dòng)創(chuàng)建和管理存儲(chǔ)空間。1.手動(dòng)創(chuàng)建需在“創(chuàng)建還原點(diǎn)”中啟用系統(tǒng)保護(hù),分配5%磁盤空間并點(diǎn)擊“創(chuàng)建”命名還原點(diǎn);2.系統(tǒng)會(huì)在安裝更新或更改設(shè)置時(shí)自動(dòng)創(chuàng)建還原點(diǎn)但不保證全面性;3.還原點(diǎn)默認(rèn)占用不超過(guò)5%的系統(tǒng)盤空間,舊版本會(huì)自動(dòng)清理,可通過(guò)調(diào)整上限管理存儲(chǔ)。

如何修復(fù)video_tdr_failure(nvlddmkm.sys) 如何修復(fù)video_tdr_failure(nvlddmkm.sys) Jul 16, 2025 am 12:08 AM

遇到藍(lán)屏錯(cuò)誤VIDEO_TDR_FAILURE(nvlddmkm.sys)時(shí),應(yīng)優(yōu)先排查顯卡驅(qū)動(dòng)或硬件問題。1.更新或回滾顯卡驅(qū)動(dòng):通過(guò)設(shè)備管理器自動(dòng)搜索更新、使用NVIDIA官網(wǎng)工具手動(dòng)安裝或回滾至舊版穩(wěn)定驅(qū)動(dòng);2.調(diào)整TDR機(jī)制:修改注冊(cè)表中TdrDelay值以延長(zhǎng)系統(tǒng)等待時(shí)間;3.檢查顯卡硬件狀態(tài):監(jiān)控溫度、電源供電、接口連接及內(nèi)存條情況;4.排查系統(tǒng)干擾因素:運(yùn)行sfc/scannow修復(fù)系統(tǒng)文件、卸載沖突軟件并嘗試安全模式啟動(dòng)以確認(rèn)問題根源。多數(shù)情況下先處理驅(qū)動(dòng)問題,若反復(fù)出現(xiàn)則需深入

什么是防火墻,它如何工作 什么是防火墻,它如何工作 Jul 08, 2025 am 12:11 AM

防火墻是一種網(wǎng)絡(luò)安全系統(tǒng),通過(guò)預(yù)定義規(guī)則監(jiān)控和控制網(wǎng)絡(luò)流量,以保護(hù)計(jì)算機(jī)或網(wǎng)絡(luò)免受未經(jīng)授權(quán)的訪問。其核心功能包括:1.檢查數(shù)據(jù)包的來(lái)源、目標(biāo)地址、端口和協(xié)議;2.根據(jù)信任度判斷是否允許連接;3.阻止可疑或惡意行為;4.支持不同類型如包過(guò)濾防火墻、狀態(tài)檢測(cè)防火墻、應(yīng)用層防火墻和下一代防火墻;5.用戶可通過(guò)操作系統(tǒng)設(shè)置啟用內(nèi)置防火墻,如Windows安全中心或macOS系統(tǒng)偏好設(shè)置;6.防火墻應(yīng)與其他安全措施如強(qiáng)密碼和更新軟件結(jié)合使用以增強(qiáng)防護(hù)效果。

如何阻止程序連接到互聯(lián)網(wǎng) 如何阻止程序連接到互聯(lián)網(wǎng) Jul 07, 2025 am 12:12 AM

要阻止特定程序聯(lián)網(wǎng)可通過(guò)系統(tǒng)防火墻或第三方工具實(shí)現(xiàn)。1.Windows用戶可使用自帶防火墻,在“出站規(guī)則”中新建規(guī)則選擇程序路徑并設(shè)置“阻止連接”;2.第三方工具如GlassWire或NetBalancer提供圖形界面操作更便捷但需注意來(lái)源可靠性和性能影響;3.Mac用戶可通過(guò)命令行配合pfctl或使用LittleSnitch等工具控制聯(lián)網(wǎng)權(quán)限;4.更徹底的方式是采用斷網(wǎng) 白名單策略默認(rèn)禁止所有程序聯(lián)網(wǎng)僅允許信任程序訪問。不同系統(tǒng)操作方式雖有差異但核心邏輯一致需注意路徑和規(guī)則生效范圍的細(xì)節(jié)。

為什么我每次都會(huì)獲得用戶帳戶控制(UAC)提示 為什么我每次都會(huì)獲得用戶帳戶控制(UAC)提示 Jul 13, 2025 am 12:12 AM

UAC頻繁彈出是因?yàn)檫\(yùn)行的程序需要管理員權(quán)限或系統(tǒng)設(shè)置級(jí)別過(guò)高。常見原因包括安裝軟件、修改系統(tǒng)設(shè)置、運(yùn)行第三方工具等操作觸發(fā)提示。若使用管理員賬戶,UAC僅確認(rèn)操作而非阻止。減少提示方法有:取消程序以管理員身份運(yùn)行、調(diào)低UAC通知級(jí)別、使用標(biāo)準(zhǔn)用戶賬戶、通過(guò)任務(wù)計(jì)劃器啟動(dòng)程序。不建議完全關(guān)閉UAC,因其能有效防止惡意程序篡改系統(tǒng),可將UAC設(shè)為“僅在程序更改計(jì)算機(jī)時(shí)通知”以平衡安全與體驗(yàn)。

如何在Facebook上更改您的名字? 如何在Facebook上更改您的名字? Jul 13, 2025 am 12:03 AM

Facebook改名流程簡(jiǎn)單但需注意規(guī)則,首先登錄應(yīng)用或網(wǎng)頁(yè)版進(jìn)入“設(shè)置與隱私”>“設(shè)置”>“個(gè)人信息”>“姓名”,輸入新名字后保存;其次必須使用真實(shí)姓名,60天內(nèi)不能頻繁修改,不可含特殊字符或數(shù)字且不得冒充他人,審核不通過(guò)可上傳身份證等輔助驗(yàn)證;提交后通常幾分鐘至3個(gè)工作日內(nèi)生效;最后改名不會(huì)通知好友,主頁(yè)名稱同步更新,舊名字仍顯示在歷史記錄中。

為什么在Windows更新后我的音頻不起作用 為什么在Windows更新后我的音頻不起作用 Jul 09, 2025 am 12:10 AM

音頻問題通常由設(shè)置變動(dòng)、驅(qū)動(dòng)異?;蛳到y(tǒng)服務(wù)故障導(dǎo)致,可按以下步驟排查解決:1.檢查音量是否靜音、輸出設(shè)備是否正確,嘗試重新插拔耳機(jī);2.通過(guò)設(shè)備管理器更新或回滾音頻驅(qū)動(dòng),必要時(shí)卸載后重啟電腦;3.確認(rèn)“WindowsAudio”服務(wù)已啟動(dòng)且啟動(dòng)類型設(shè)為自動(dòng);4.運(yùn)行sfc/scannow命令修復(fù)可能損壞的系統(tǒng)文件。按照順序逐步操作,多數(shù)情況可恢復(fù)音頻功能。

關(guān)閉或睡覺我的電腦更好嗎 關(guān)閉或睡覺我的電腦更好嗎 Jul 08, 2025 am 12:19 AM

睡眠和關(guān)機(jī)各有用途,選擇取決于使用場(chǎng)景。1.睡眠適合短暫休息,保持低功耗并快速恢復(fù)工作;2.關(guān)機(jī)適合長(zhǎng)時(shí)間不使用、安裝更新或排查故障,完全斷電節(jié)省能源;3.混合睡眠兼顧內(nèi)存與硬盤保存,防止斷電丟失數(shù)據(jù);4.筆記本需注意電池健康,避免長(zhǎng)期睡眠導(dǎo)致過(guò)度放電;5.睡眠模式下可能仍有后臺(tái)任務(wù)運(yùn)行,建議根據(jù)需求調(diào)整設(shè)置以優(yōu)化性能和能耗。