一、多工的兩種執行方式:
併發:單核cpu中,執行多個任務時,叫做併發任務(任務數大於cpu核數,併發執行任務)
並行:多核cpu中,執行多個任務時,各任務在不同cpu執行下的過程,叫做並行
(同一時間內兩個軟體同時執行,只有多核cpu多個軟體一起執行。任務數小於等於cpu核數,並行執行多工)
python執行多工的方式:程序、執行緒、協程
程序:乙個正在執行的程式或者軟體 啟動程序時,作業系統會分配記憶體資源,保證程序執行。(程序是作業系統進行資源分配的基本單位),程序只管程式或軟體記憶體資源(hello.py程式)多程序可以完成多工。
執行緒:乙個程序預設乙個執行緒,沒有程序就沒有執行緒
二、多程序的使用
1、匯入程序包:
import multiprocessing
2、process程序類的說明:
process[group[,target[,name[,args[,kwargs]]]]]
group:指定程序組,目前只能使用none
target:執行的目標任務名(乙個函式或乙個方法)
name:程序名字(process-1,一般不用管)
args:以元組方式給執行任務傳參(執行某個任務時)
kwargs:以字典方式給執行任務傳參
3、process建立的例項物件的常用方法:
start():啟動子程序例項(建立子程序)
join():等待子程序執行結束
terminate():不管任務是否完成,立即終止子程序
4、process建立的例項物件的常用屬性:
name:當前程序的別名,預設process-n,n為從1開始遞增的整數
舉例:程式中有唱歌任務和跳舞任務,預設程式只有乙個程序,有先後執行
#1、匯入程序包
import multiprocessing
import time
#跳舞任務
def dance():
for i in range(3):
print(『跳舞中。。。』)
time.sleep(0.5)
#唱歌任務
def sing():
for i in range(3):
print(『唱歌中。。。』)
time.sleep(0.5)
#2、建立子程序(自己手動建立程序為子程序) 在__init__py檔案中已經匯入的process類
#2.1 group:程序組,目前只能使用none,一般不需要設定
#2.2 target: 程序執行的目標任務
#2.3 name:程序名,如果不設定,預設是process-1,…
dance_process = multiprocessing.process(group=none,target=dance)
##sing_process = multiprocessing.process(group=none,target=sing)
#3、啟動程序執行對應的任務
dance_process.start()
#3.1主程序執行唱歌任務
sing()
##sing_process.start()
###程序執行時無序的,具體哪個程序先執行是由作業系統排程決定
附加一、#獲取當前程序(主程序)的編號
main_process_id = os.getpid()
獲取當前程序物件,檢視當前**是由哪個程序執行的
print(「main_process_id:」,main_process_id,multiprocessing.current_process())
#獲取當前程序的父程序的編號
main_process_id = os.getppid()
**附加二、**程序引數使用案例
import multiprocessing
def students_info(name,age):
print(name,age)
stu_process = multiprocessing.process(target=students_info,args=(「王五」,18))
## args顯示引數為元組格式 kwargs顯示引數為字典格式 可以並用輸出
stu_process.start()
Python多工 並行 併發
1.什麼是 多工 呢?簡單地說,就是作業系統可以同時執行多個任務 在 裡面,就是乙個程式有多個地方同時執行 打個比方,你一邊用著這瀏覽器上網,一邊在聽 一邊在用word趕作業,這就是多工 2.單核cpu是怎麼解決多工的?單核 意味著同一時刻只能執行一件事情 作業系統輪流讓各任務交替執行,任務1執行0...
6 2Process 多程序實現多工
程序實現多工時浪費資源 主程序 占用資源 子程序1 複製主程序 占用資源 子程序2 複製主程序 占用資源 coding utf 8 import threading import time import multiprocessing def test1 子程序1 while true print ...
多工 程序
import time import multiprocessing deftest1 while true print 1 time.sleep 1 deftest2 while true print 2 time.sleep 1 defmain t1 threading.thread targe...