多工(併發 並行) 多程序學習

2021-10-03 14:38:31 字數 2184 閱讀 4632

一、多工的兩種執行方式:

併發:單核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...