偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

你真的了解Python嗎?什么場景使用多線程,什么場景使用多進(jìn)程?

開發(fā) 后端
Python多線程不能使用CPU多核資源,即同一時(shí)刻,只有一個(gè)線程使用CPU資源,所以使用Python多線程不能算是并發(fā)。

 [[273511]]

引言

涉及并發(fā)的場景,大家想到使用多線程或多進(jìn)程解決并發(fā)問題;

一般情況下,解決多并發(fā)場景問題,多數(shù)語言采用多線程編程模式(線程是輕量級的進(jìn)程,共用一份進(jìn)程空間)。

也同樣適用于Python多并發(fā)處理嗎?

答:不是的,針對并發(fā)處理,Python多線程和多進(jìn)程是有很大差異的!

Python多線程和多進(jìn)程差異

Python多線程不能使用CPU多核資源,即同一時(shí)刻,只有一個(gè)線程使用CPU資源,所以使用Python多線程不能算是并發(fā)。

如果想要充分利用CPU多核資源,做到多并發(fā),這就需要Python多進(jìn)程的了!

也就是說:只有Python多進(jìn)程才能利用CPU多核資源,做到真正的多并發(fā)!

Python多線程和多進(jìn)程應(yīng)用場景

既然Python多線程不能并發(fā),那存在還有什么意義呢?

其實(shí)Python多線程和多進(jìn)程有自己的應(yīng)用場景:

  • Python多線程適用于I/O密集型場景,如解決網(wǎng)絡(luò)IO、磁盤IO阻塞問題,例如文件讀寫、網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)?
  • 而Python多進(jìn)程更適用于計(jì)算密集型場景,多并發(fā),大量計(jì)算任務(wù)等。

注意:Python多線程和多進(jìn)程在平時(shí)開發(fā)過程中,需要注意使用,如果使用Python多線程方式處理計(jì)算密集型任務(wù),它比實(shí)際單進(jìn)程處理性能還要慢!所以要注意,看場景類型。

再談Python多線程,全局解釋器鎖(GIL)

為什么Python多線程不能使用CPU多核資源?

為什么Python多線程在同一時(shí)刻,只有一個(gè)線程使用CPU資源?

正是因?yàn)镻ython有一個(gè)全局解釋器鎖(GIL,全稱Global Interpreter Lock),它使得Python多線程無法使用CPU多核資源,保證同一時(shí)刻只有一個(gè)線程在使用CPU資源;當(dāng)出現(xiàn)IO阻塞時(shí),解鎖,釋放CPU資源,其他線程才能申請到鎖,使用CPU資源。

Python并發(fā)編程

Python多進(jìn)程編程使用的模塊庫:multiprocessing模塊,是Python內(nèi)置的多進(jìn)程處理庫,使用與線程庫threading.Thread類似。

Python多線程編程使用的模塊庫:

  • thread模塊 Python內(nèi)置,比較底層,不推薦使用
  • threading模塊 Python內(nèi)置
  • multiprocessing.dummy模塊 Python內(nèi)置

補(bǔ)充:

multiprocessing模塊 和 multiprocessing.dummy模塊

兩者的區(qū)別在于:前者是多進(jìn)程,后者是多線程;但是他們編程接口完全一致;

所以很方便的將代碼在多線程和多進(jìn)程進(jìn)行切換!

由于篇幅有限,暫不介紹編程模塊具體使用,以后會開專題補(bǔ)上!

之前整理的Python多線程和多進(jìn)程思維導(dǎo)圖供大家參考:

Python多進(jìn)程編程

 

 

你真的了解Python嗎?什么場景使用多線程,什么場景使用多進(jìn)程?

 

 

Python多線程編程

 

 

你真的了解Python嗎?什么場景使用多線程,什么場景使用多進(jìn)程?

 

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-11-28 13:52:00

Python多進(jìn)程多線程

2024-01-25 10:14:09

HashSetHashMapJava

2023-09-03 22:46:27

數(shù)據(jù)庫PostgreSQL

2022-03-23 09:52:28

LambdaAWS服務(wù)

2020-09-03 06:42:12

線程安全CPU

2024-08-22 10:51:09

Typescript場景類型

2022-03-09 17:01:32

Python多線程多進(jìn)程

2023-12-08 08:29:53

SpringAOP日志

2010-07-14 11:27:42

Perl多進(jìn)程

2020-08-13 09:37:20

Python代碼命令

2014-04-17 16:42:03

DevOps

2022-07-26 00:00:22

HTAP系統(tǒng)數(shù)據(jù)庫

2022-10-17 00:27:20

二叉樹數(shù)組索引

2024-03-06 09:24:50

AsyncAwaitC#

2025-01-21 00:00:10

項(xiàng)目MQCRUD

2022-04-28 08:12:29

函數(shù)調(diào)用進(jìn)程切換代碼

2020-11-20 07:58:04

Java

2019-02-26 11:15:25

進(jìn)程多線程多進(jìn)程

2021-02-03 14:43:40

人工智能人臉識別

2020-04-07 11:10:30

Python數(shù)據(jù)線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號