中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python 進程Process與線程threading區別

發布時間:2020-07-31 03:38:51 來源:網絡 閱讀:253 作者:qq5d6f345f0205e 欄目:編程語言

一.線程threading創建

對于python線程相關的函數本文不再做詳細講解,如果想學習線程threading內容請參考:python 線程創建和參數傳遞???

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

# !usr/bin/env python

# -*- coding:utf-8 _*-

"""

@Author:何以解憂

@Blog(個人博客地址): shuopython.com

@WeChat Official Account(微信公眾號):猿說python

@Github:www.github.com

?

@File:python_threading.py

@Time:2019/12/21 21:25

?

@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!

"""

?

import threading

?

?

def study_info(*args,**kwargs):

????print(args,kwargs)

?

def main():

?

????# 信息列表

????list_info = [{"name":"python 基礎","progress":"10%"},

???????????????? {"name": "python 面向對象", "progress": "20%"},

???????????????? {"name": "python 爬蟲", "progress": "30%"},

???????????????? {"name": "python pyqt5", "progress": "40%"},

???????????????? {"name": "python 數據結構", "progress": "50%"},]

?

????# 創建線程

????for i in range(5):

????????p = threading.Thread(target=study_info,args=(i,),kwargs=list_info[i])

????????# 啟動線程

????????p.start()

?

?

if __name__ == "__main__":

????main()

輸出結果:

1

2

3

4

5

(0,) {'name': 'python 基礎', 'progress': '10%'}

(1,) {'name': 'python 面向對象', 'progress': '20%'}

(2,) {'name': 'python 爬蟲', 'progress': '30%'}

(3,) {'name': 'python pyqt5', 'progress': '40%'}

(4,) {'name': 'python 數據結構', 'progress': '50%'}

?

?

二.進程Process創建

對于python進程相關的函數本文不再做詳細講解,如果想學習進程Process內容請參考:python 進程Process

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

from multiprocessing import Process

?

?

def study_info(*args,**kwargs):

????print(args,kwargs)

?

def main():

?

????# 信息列表

????list_info = [{"name":"python 基礎","progress":"10%"},

???????????????? {"name": "python 面向對象", "progress": "20%"},

???????????????? {"name": "python 爬蟲", "progress": "30%"},

???????????????? {"name": "python pyqt5", "progress": "40%"},

???????????????? {"name": "python 數據結構", "progress": "50%"},]

?

????# 創建進程

????for i in range(5):

????????p = Process(target=study_info,args=(i,),kwargs=list_info[i])

????????# 啟動進程

????????p.start()

?

if __name__ == "__main__":

????main()

輸出結果:

1

2

3

4

5

(0,) {'name': 'python 基礎', 'progress': '10%'}

(1,) {'name': 'python 面向對象', 'progress': '20%'}

(2,) {'name': 'python 爬蟲', 'progress': '30%'}

(3,) {'name': 'python pyqt5', 'progress': '40%'}

(4,) {'name': 'python 數據結構', 'progress': '50%'}

?

?

三.進程Process和線程threading區別

1.一個線程只能屬于一個進程,而一個進程可以有多個線程,但至少有一個線程(線程是計算機的最小單位);

2.資源分配給進程,同一進程的所有線程共享該進程的所有資源,進程與進程之間資源相互獨立,互不影響(類似深拷貝);

3.多進程模式最大的優點就是穩定性高,因為一個子進程崩潰了,不會影響主進程和其他子進程,多進程模式的缺點是在Windows下創建進程開銷巨大。另外,操作系統能同時運行的進程數也是有限的,在內存和CPU的限制下,如果有幾千個進程同時運行,操作系統連調度都會成問題(進程的創建比線程的創建更加占用計算機資源);

4.多線程模式致命的缺點就是任何一個線程掛掉都可能直接造成整個進程崩潰,因為所有線程共享進程的內存;

5.由于GIL鎖的緣故,python 中線程實際上是并發運行(即便有多個cpu,線程會在其中一個cpu來回切換,只占用一個cpu資源),而進程才是真正的并行(同時執行多個任務,占用多個cpu資源),下面關于并行和并發做一個簡單的了解;

?

四.關于線程并發和進程并行的簡單介紹

并行是指兩個或者多個事件在同一時刻發生,python中的進程屬于并行能充分利用計算機資源效率最高同時執行多個任務,占用多個cpu資源;python 進程Process與線程threading區別

并發是指兩個或多個事件在同一時間間隔發生,python中的線程屬于并發不管計算機有多少個CPU,不管你開了多少個線程,同一時間多個任務會在其中一個CPU來回切換,只占用一個CPU,效率并不高;

python 進程Process與線程threading區別

關于并行和并發我們留到后面GIL鎖在詳細講解;

?

?

猜你喜歡:

1.python 進程Process

2.python 線程threading

3.python列表推導式

4.python字典推導式

?

轉載請注明:猿說Python???python 線程threading與進程Process區別


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泗水县| 平谷区| 河南省| 永嘉县| 黄梅县| 福鼎市| 盐亭县| 宝应县| 尼木县| 阿巴嘎旗| 澄城县| 鄄城县| 皋兰县| 新闻| 东源县| 绥德县| 中宁县| 仙居县| 通许县| 利川市| 濮阳县| 鲁山县| 孝感市| 宜丰县| 菏泽市| 土默特左旗| 呼玛县| 平和县| 历史| 大荔县| 荆州市| 牡丹江市| 盐池县| 孝昌县| 偏关县| 石棉县| 枣庄市| 八宿县| 星子县| 西安市| 海盐县|