from multiprocessing import Process import time def task(): print('進程 start') time.sleep(2) print('進程 end') if __name__ == '__main__':#當開啓子進程的時候,執行main內的代碼 # 不會出現像遞歸同樣的方式,一直建立子進程,在main內只會建立一個子進程 p = Process(target=task)#開子進程 申請新的內存空間 把父進程的全部代碼完整拷貝一份過去 p.start()#告訴操做系統要開啓子進程 time.sleep(3) print('主進程') ############### 進程 start 進程 end 主進程
from multiprocessing import Process import time def task(x): print(f'子進程{x}-————>start') time.sleep(2) print(f'進程{x}-————>end') if __name__ == '__main__':#當開啓子進程的時候,執行main內的代碼 # 不會出現像遞歸同樣的方式,一直建立子進程,在main內只會建立一個子進程 p1 = Process(target=task,args=('ocean',))#開子進程 申請新的內存空間 把父進程的全部代碼完整拷貝一份過去 p2 = Process(target=task,args=('sky',)) p1.start() p2.start() time.sleep(2) print('主進程') ################# 子進程ocean-————>start 子進程sky-————>start 主進程 進程ocean-————>end 進程sky-————>end
from multiprocessing import Process import time class Test(Process): def __init__(self,sex): super().__init__() self.sex = sex def run(self): print(f'子進程的性別是{self.sex}------>start') time.sleep(1) print(f'子進程end') if __name__ == '__main__':#當開啓子進程的時候,執行main內的代碼 # 不會出現像遞歸同樣的方式,一直建立子進程,在main內只會建立一個子進程 p = Test('女')#開子進程 申請新的內存空間 把父進程的全部代碼完整拷貝一份過去 p.start() print('主進程') ############################## 主進程 子進程的性別是女------>start 子進程end
from multiprocessing import Process import time x = 0 def task(): global x x = 100 print('子進程的x修改成{}'.format(x)) if __name__ == '__main__': p = Process(target=task) p.start() time.sleep(3) print(x) ################# 子進程的x修改成100 0
但凡是硬件,都須要有操做系統去管理,只要有操做系統,就有進程的概念,就須要有建立進程的方式,一些操做系統只爲一個應用程序設計,好比微波爐中的控制器,一旦啓動微波爐,全部的進程都已經存在。linux
而對於通用系統(跑不少應用程序),須要有系統運行過程當中建立或撤銷進程的能力,主要分爲4中形式建立新的進程:nginx
不管哪種,新進程的建立都是由一個已經存在的進程執行了一個用於建立進程的系統調用而建立的。web
關於建立子進程,UNIX和Windows:shell