国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

老生常談進程線程協程那些事兒

2020-02-16 01:56:46
字體:
來源:轉載
供稿:網友

一、進程與線程

1.進程

我們電腦的應用程序,都是進程,假設我們用的電腦是單核的,cpu同時只能執行一個進程。當程序出于I/O阻塞的時候,CPU如果和程序一起等待,那就太浪費了,cpu會去執行其他的程序,此時就涉及到切換,切換前要保存上一個程序運行的狀態,才能恢復,所以就需要有個東西來記錄這個東西,就可以引出進程的概念了。

進程就是一個程序在一個數據集上的一次動態執行過程。進程由程序,數據集,進程控制塊三部分組成。程序用來描述進程哪些功能以及如何完成;數據集是程序執行過程中所使用的資源;進程控制塊用來保存程序運行的狀態

2.線程

一個進程中可以開多個線程,為什么要有進程,而不做成線程呢?因為一個程序中,線程共享一套數據,如果都做成進程,每個進程獨占一塊內存,那這套數據就要復制好幾份給每個程序,不合理,所以有了線程。

線程又叫輕量級進程,是一個基本的cpu執行單元,也是程序執行過程中的最小單元。一個進程最少也會有一個主線程,在主線程中通過threading模塊,在開子線程

3.進程線程的關系

(1)一個線程只能屬于一個進程,而一個進程可以有多個線程,但至少有一個線程

(2)資源分配給進程,進程是程序的主體,同一進程的所有線程共享該進程的所有資源

(3)cpu分配給線程,即真正在cpu上運行的是線程

(4)線程是最小的執行單元,進程是最小的資源管理單元

4.并行和并發

并行處理是指計算機系統中能同時執行兩個或多個任務的計算方法,并行處理可同時工作于同一程序的不同方面

并發處理是同一時間段內有幾個程序都在一個cpu中處于運行狀態,但任一時刻只有一個程序在cpu上運行。

并發的重點在于有處理多個任務的能力,不一定要同時;而并行的重點在于就是有同時處理多個任務的能力。并行是并發的子集


以上所說的是相對于所有語言來說的,Python的特殊之處在于Python有一把GIL鎖,這把鎖限制了同一時間內一個進程只能有一個線程能使用cpu

二、threading模塊

這個模塊的功能就是創建新的線程,有兩種創建線程的方法:

1.直接創建

import threadingimport timedef foo(n): print('>>>>>>>>>>>>>>>%s'%n) time.sleep(3) print('tread 1')t1=threading.Thread(target=foo,args=(2,))#arg后面一定是元組,t1就是創建的子線程對象t1.start()#把子進程運行起來print('ending')

上面的代碼就是在主線程中創建了一個子線程

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 神农架林区| 浦江县| 宁夏| 开江县| 泸定县| 龙里县| 宝山区| 宁陵县| 卢氏县| 昆山市| 昌邑市| 东海县| 宜阳县| 洪湖市| 苗栗县| 浦城县| 维西| 泽普县| 福贡县| 鹤庆县| 辉县市| 牙克石市| 伊宁市| 苗栗县| 陵水| 延川县| 黔江区| 金塔县| 泰宁县| 朝阳区| 青浦区| 红原县| 东兴市| 昭通市| 崇仁县| 通州市| 伊春市| 西林县| 平遥县| 维西| 马尔康县|