1. 程式人生 > >python之路--操作系統介紹,進程的創建

python之路--操作系統介紹,進程的創建

進入 決定 xxx art 繼續 sin bsp __init__ 開始

一 操作系統的作用:
  1:隱藏醜陋復雜的硬件接口,提供良好的抽象接口
  2:管理、調度進程,並且將多個進程對硬件的競爭變得有序

二 多道技術:

  所謂多道程序設計技術,就是指允許多個程序同時進入內存並運行。即同時把多個程序放入內存,並允許它們交替在CPU中運行,它們共享系統中的各種硬、軟件資源。當一道程序因I/O請求而暫停運行時,CPU便立即轉去運行另一道程序。

  1.產生背景:針對單核,實現並發
  ps:
  現在的主機一般是多核,那麽每個核都會利用多道技術有4個cpu,
  運行於cpu1的某個程序遇到io阻塞,會等到io結束再重新調度,會被調度到4個cpu中的任意一個,具體由操作系統調度算法決定。

  2.空間上的復用:如內存中同時有多道程序
  3.時間上的復用:復用一個cpu的時間片
  強調:遇到io切,占用cpu時間過長也切,核心在於切之前將進程的狀態保存下來,這樣才能保證下次切換回來時,
  能基於上次切走的位置繼續運行

三 multiprocess 的簡單應用

import time
from multiprocessing import Process
def func1():
    print(‘我是大帥哥‘)
    time.sleep(1)
    print(‘我是宇宙無敵大帥哥‘)
    time.sleep(3)
    print(‘人稱北京吳彥祖‘)
def func2():
    time.sleep(3)
    print(‘斯嘉麗.約翰遜是大美女‘)
if __name__ == ‘__main__‘:
    f1 = Process(target=func1) # 後面不能用()
    f2 = Process(target=func2)
    f1.start()
    f2.start()

四 進程的傳參方式

from multiprocessing import Process
class MyProcess(Process):
    # 要想使類中的init功能需要繼承父類的init,在添加新功能
    def __init__(self,n):
        # 要執行process
        super().__init__()  
        self.n = n
    def run(self):
        print(‘寶寶and%s不可告人的事情‘%self.n)
if __name__ == ‘__main__‘:
    p1 = MyProcess(‘高望‘)
    p1.start()

五 join方法

import time
from multiprocessing import Process
def f1():
    time.sleep(2)
    print(‘xxxx‘)
def f2():
    time.sleep(2)
    print(‘ssss‘)
if __name__ == ‘__main__‘:
    p1 = Process(target=f1,)
    p1.start()
    p1.join()  # 主進程等待子進程運行完才繼續執行
    print(‘開始p2拉‘)
    p2 = Process(target=f2,)
    p2.start()
    p2.join()
    print(‘我要等了...等我的子進程...‘)
    # time.sleep(3)
    print(‘我是主進程!!!‘)

  

python之路--操作系統介紹,進程的創建