python之操做系統介紹,進程的建立

操做系統(英語:operating system,縮寫做 OS)是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。操做系統須要處理如管理與配置內存、決定系統資源供需的優先次序、控制輸入與輸出設備、操做網絡與管理文件系統等基本事務。操做系統也提供一個讓用戶與系統交互的操做界面。網絡

操做系統簡單介紹:併發

  多道程序設計技術異步

    空間複用函數

    時間複用spa

    進程之間是空間隔離的操作系統

  分時系統設計

  實時系統code

  通用操做系統對象

併發:僞並行,看着像同時運行,實際上是任務之間的切換(遇到io切換的會提升代碼效率) ,任務切換+保存狀態(保存現場)blog

並行:真正的同時在運行,應用的是多核技術(多個cpu)

 

進程三狀態:就緒(等待操做系統調度去cpu裏面執行)      執行  阻塞

 

 

提交任務的方式:同步異步   任務的執行狀態:阻塞非阻塞

  異步:任務的提交方式,多個任務提交出去,同時執行

 分類:

  同步阻塞

  異步阻塞:

  異步非阻塞:

  同步非阻塞:

進程的2種建立方式:

第一種:

複製代碼
import time
from multiprocessing import Process

def f1():
    time.sleep(3)
    print('我同桌是豬')
    print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
def f2():
    time.sleep(3)
    print('還偷偷睡覺')
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))

if __name__ == '__main__':
    p1 = Process(target=f1,)
    p2 = Process(target=f2, )
    p1.start()
    p2.start()
複製代碼

 

 

 第二種方式: 建立一個類,繼承Process

複製代碼
from multiprocessing import Process
class MyProcess(Process):
    def __init__(self,n):
        super().__init__()  #別忘了執行父類的init
        self.n = n
    def run(self):
        print('%s快要睡着了'%self.n)

if __name__ == '__main__':
    p1 = MyProcess('Jerry')
    p1.start()
複製代碼

 

 傳參方式:

複製代碼
from multiprocessing import Process
# 演示兩種傳參方式
def f1(n):
    print(n)

if __name__ == '__main__':
    # p1 = Process(target=f1,args=('Jerry',)) #建立進程對象
    p1 = Process(target=f1,kwargs={'n':'Jerry'}) # 建立進程對象    kwargs={函數中的形參做爲key:值}
    p1.start()  #給操做系統發送了一個建立進程的信號,後續進程的建立都是操做系統的事兒了
複製代碼

 

for 循環建立進程:

複製代碼
import time
from multiprocessing import Process

def f1(i):
    time.sleep(3)
    print(i)
if __name__ == '__main__':
    for i in range(20):
        p1 = Process(target=f1,args=(i,))
        p1.start()
複製代碼

 

join()方法:主進程等待子進程運行完才繼續執行

複製代碼
import time
from multiprocessing import Process

def f1():
    time.sleep(2)
    print('我是f1')

def f2():
    time.sleep(2)
    print('我是f2')

if __name__ == '__main__':
    p1 = Process(target=f1,)
    p1.start()
    p1.join()  # 主進程等待子進程運行完才繼續執行
    
    print('p2來了')
    p2 = Process(target=f2,)
    p2.start()
    p2.join()
    
    print('我要等了...等個人子進程...')
    print('我是主進程!!!')
複製代碼

相關文章
相關標籤/搜索