菜鳥學習 Python中的程序 (一)

2021-08-22 00:14:18 字數 2595 閱讀 3048

一、程序與執行緒的概念

1、程序

程序與執行緒都是計算機作業系統中的基本執行單元,乙個程式,可能包括多個程序,乙個程序可能包括多個執行緒。程序是資源管理最小單位,執行緒是計算機執行最小單位。程序就是正在執行的程式,比如你執行qq,在windows任務管理器中就會有qq.exe或qq相關的exe,這些就是程序。

2、執行緒

執行緒是程序的執行單元,大多數程式只有乙個主線程,但是為了提高效率,可以使用多個執行緒。在執行cpu密集的任務時,python多執行緒屬於雞肋。因為全域性鎖的存在(gil),同一時間只有乙個執行緒會被執行,其他執行緒都會等待,這樣即使有多個cpu核也會只是實現分時操作。多個執行緒也可能只是線性執行,因為全域性鎖的上下文開銷,效率反而不如單執行緒。

但如果是i/o密集型程式,比如網路通訊、讀寫檔案,python的多執行緒可以明顯的提高效率。

3、程序和執行緒的對比

程序是重量級的,建立乙個程序開銷比較大,執行緒是輕量級的,生產線程的開銷比較小,但會存在死鎖、資料同步、實現複雜等問題。

因為python使用了全域性直譯器鎖(gil)和佇列模組,所以其執行緒的實現複雜度比其他語言要低很多。python直譯器並不是執行緒安全的,因為當前執行緒必須有全域性直譯器鎖才能安全訪問python物件。

二、python對於程序與執行緒處理的支援

1、程序和執行緒相關函式與模組

os/sys : 包含基本程序管理函式

subprocess : python基本庫中多程序相關模組

signal : python基本庫中訊號相關模組

threading : python基本庫中線程相關模組

2、os/sys模組中的相關函式

popen : 生成新的程序

abort/exit : 終止程序

system : 直接生成字元所代表的程序

exec家族 : 在現有程序環境下生成新程序

三、python的程序程式設計

1、程序執行環境

對於每個執行的程序,作業系統都會提供乙個相關執行環境,一般可以看作是環境變數的集合。當程序啟動的時候,環境變數就確定了,只有當前程序可以修改其環境變數。在建立程序時,子程序會得到當前父程序執行環境的乙個副本。

在python中,os模組提供了environ屬性,用來記錄當前程序的執行環境。是乙個字典結構,鍵是環境變數的變數名,值是環境變數的值。

1.1、獲取當前環境變數中的path值 **(python 3.0):

import os

path = os.environ.get(『path』)

print(path)

1.2、獲取當前程序中所有環境變數 其實就是遍歷一下environ屬性字典

import os

for key in os.environ.keys:

print (key, 『:』 os.environ[key])

1.3、修改或生成環境變數

import os

os.environ[「key」] = 『value』

2、建立程序

python提供了多種方式建立程序,除了在os模組中有豐富的建立程序函式外,還有其他選擇。os模組中主要包括system和exec家族函式,用來建立不同需求情況下的程序。

1.1、system函式

system函式是用來建立程序的最快捷方式:

system(command)

**:

import os

print(os.system(「dir」))

1.2、exec家族函式

exec家族函式包含了8個類似的函式,與system不同,system函式是呼叫系統內建的命令列程式來執行系統命令,命令結束之後將程序控制權返回給python程序,而exec函式則會替換呼叫程序,是接管而不是從屬。所以,system函式是建立乙個可控制程序,相當於多了乙個小弟,而exec函式是建立乙個程序接管當前程序,乾掉大哥自己當大哥。

3、終止程序

python 提供了多種不同的方式終止程序,return就是其中一種,python指令碼遇到最外層的return語句退出的時候,程序就終止了。另外還有兩種方法終止程序:sys.exit 和 os.abort

1、sys.exit函式

exit函式是「溫和」的結束程序,退出前會執行一些清理工作,並且返回乙個值給呼叫程序(一般是作業系統),由此可以判斷程式是正常退出還是出了異常退出。

2、os.abort函式

abort是」暴力」退出,直接給程序發終止訊號,不會做相關的清理工作。可以使用signal.signal()來為sigabort訊號註冊不同的訊號處理函式。

用abort的地方都可以用exit函式來代替,但當exit不能終止程式或者時間過長的時候,可以用abort來解決。

菜鳥python學習

python中單引號和雙引號的作用相同,使用三引號 或 可以指定乙個多行字元 word 字串 sentence 這是乙個句子 paragraph 這是乙個段落,可以由多行組成 python可以在一行中寫多行,句子直接用分號連線 import sys x runoob sys.stdout.write...

python 菜鳥學習之路

day 2 函式的引數 預設引數可以簡化函式的呼叫。必選引數在前,預設引數在後,否則python的直譯器會報錯,函式有多個引數時,把變化大的引數放前面,變化小的引數放後面。變化小的引數就可以作為預設引數。定義預設引數要牢記一點 預設引數必須指向不變物件!給定一組數字a,b,c 請計算a 2 b 2 ...

菜鳥學python文件 菜鳥學習python筆記

1.模組 三種呼叫方法 1.在vim寫的乙個python的檔案 運用import 匯入,就可以在互動模式的直接進行呼叫 2.呼叫模組裡面的某個函式 from 模組名字 in 函式名字 3.將模組名字變短進行呼叫 import 模組原名 as 新名字 2.基於python開發的東西存放目錄 usr l...