您好,登錄后才能下訂單哦!
方式一: os.fork()
# -*- coding:utf-8 -*- """ pid=os.fork() 1.只用在Unix系統中有效,Windows系統中無效 2.fork函數調用一次,返回兩次:在父進程中返回值為子進程id,在子進程中返回值為0 """ import os pid=os.fork() if pid==0: print("執行子進程,子進程pid={pid},父進程ppid={ppid}".format(pid=os.getpid(),ppid=os.getppid())) else: print("執行父進程,子進程pid={pid},父進程ppid={ppid}".format(pid=pid,ppid=os.getpid()))
方式二: 使用multiprocessing模塊: 創建Process的實例,傳入任務執行函數作為參數
# -*- coding:utf-8 -*- """ Process常用屬性與方法: name:進程名 pid:進程id run(),自定義子類時覆寫 start(),開啟進程 join(timeout=None),阻塞進程 terminate(),終止進程 is_alive(),判斷進程是否存活 """ import os,time from multiprocessing import Process def worker(): print("子進程執行中>>> pid={0},ppid={1}".format(os.getpid(),os.getppid())) time.sleep(2) print("子進程終止>>> pid={0}".format(os.getpid())) def main(): print("主進程執行中>>> pid={0}".format(os.getpid())) ps=[] # 創建子進程實例 for i in range(2): p=Process(target=worker,name="worker"+str(i),args=()) ps.append(p) # 開啟進程 for i in range(2): ps[i].start() # 阻塞進程 for i in range(2): ps[i].join() print("主進程終止") if __name__ == '__main__': main()
方式三: 使用multiprocessing模塊: 派生Process的子類,重寫run方法
# -*- coding:utf-8 -*- import os,time from multiprocessing import Process class MyProcess(Process): def __init__(self): Process.__init__(self) def run(self): print("子進程開始>>> pid={0},ppid={1}".format(os.getpid(),os.getppid())) time.sleep(2) print("子進程終止>>> pid={}".format(os.getpid())) def main(): print("主進程開始>>> pid={}".format(os.getpid())) myp=MyProcess() myp.start() # myp.join() print("主進程終止") if __name__ == '__main__': main()
方式四: 使用進程池Pool
# -*- coding:utf-8 -*- import os,time from multiprocessing import Pool def worker(arg): print("子進程開始執行>>> pid={},ppid={},編號{}".format(os.getpid(),os.getppid(),arg)) time.sleep(0.5) print("子進程終止>>> pid={},ppid={},編號{}".format(os.getpid(),os.getppid(),arg)) def main(): print("主進程開始執行>>> pid={}".format(os.getpid())) ps=Pool(5) for i in range(10): # ps.apply(worker,args=(i,)) # 同步執行 ps.apply_async(worker,args=(i,)) # 異步執行 # 關閉進程池,停止接受其它進程 ps.close() # 阻塞進程 ps.join() print("主進程終止") if __name__ == '__main__': main()
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。