python之路--操作系統介紹,進程的創建
阿新 • • 發佈:2019-01-09
進入 決定 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之路--操作系統介紹,進程的創建