您好,登錄后才能下訂單哦!
本文實例講述了python進程的狀態、創建及使用方法。分享給大家供大家參考,具體如下:
進程以及狀態
1. 進程
程序:例如xxx.py這是程序,是一個靜態的
進程:一個程序運行起來后,代碼+用到的資源 稱之為進程,它是操作系統分配資源的基本單元。
不僅可以通過線程完成多任務,進程也是可以的
2. 進程的狀態
工作中,任務數往往大于cpu的核數,即一定有一些任務正在執行,而另外一些任務在等待cpu進行執行,因此導致了有了不同的狀態
進程的創建-multiprocessing
multiprocessing模塊就是跨平臺版本的多進程模塊,提供了一個Process類來代表一個進程對象,這個對象可以理解為是一個獨立的進程,可以執行另外的事情
1. 2個while循環一起執行
# -*- coding:utf-8 -*- from multiprocessing import Process import time def run_proc(): """子進程要執行的代碼""" while True: print("----2----") time.sleep(1) if __name__=='__main__': p = Process(target=run_proc) p.start() while True: print("----1----") time.sleep(1)
說明
2. 進程pid
# -*- coding:utf-8 -*- from multiprocessing import Process import os import time def run_proc(): """子進程要執行的代碼""" print('子進程運行中,pid=%d...' % os.getpid()) # os.getpid獲取當前進程的進程號 print('子進程將要結束...') if __name__ == '__main__': print('父進程pid: %d' % os.getpid()) # os.getpid獲取當前進程的進程號 p = Process(target=run_proc) p.start()
3. Process語法結構如下:
Process([group [, target [, name [, args [, kwargs]]]]])
Process創建的實例對象的常用方法:
Process創建的實例對象的常用屬性:
4. 給子進程指定的函數傳遞參數
# -*- coding:utf-8 -*- from multiprocessing import Process import os from time import sleep def run_proc(name, age, **kwargs): for i in range(10): print('子進程運行中,name= %s,age=%d ,pid=%d...' % (name, age, os.getpid())) print(kwargs) sleep(0.2) if __name__=='__main__': p = Process(target=run_proc, args=('test',18), kwargs={"m":20}) p.start() sleep(1) # 1秒中之后,立即結束子進程 p.terminate() p.join()
運行結果:
子進程運行中,name= test,age=18 ,pid=45097...
{'m': 20}
子進程運行中,name= test,age=18 ,pid=45097...
{'m': 20}
子進程運行中,name= test,age=18 ,pid=45097...
{'m': 20}
子進程運行中,name= test,age=18 ,pid=45097...
{'m': 20}
子進程運行中,name= test,age=18 ,pid=45097...
{'m': 20}
5. 進程間不同享全局變量
# -*- coding:utf-8 -*- from multiprocessing import Process import os import time nums = [11, 22] def work1(): """子進程要執行的代碼""" print("in process1 pid=%d ,nums=%s" % (os.getpid(), nums)) for i in range(3): nums.append(i) time.sleep(1) print("in process1 pid=%d ,nums=%s" % (os.getpid(), nums)) def work2(): """子進程要執行的代碼""" print("in process2 pid=%d ,nums=%s" % (os.getpid(), nums)) if __name__ == '__main__': p1 = Process(target=work1) p1.start() p1.join() p2 = Process(target=work2) p2.start()
運行結果:
in process1 pid=11349 ,nums=[11, 22]
in process1 pid=11349 ,nums=[11, 22, 0]
in process1 pid=11349 ,nums=[11, 22, 0, 1]
in process1 pid=11349 ,nums=[11, 22, 0, 1, 2]
in process2 pid=11350 ,nums=[11, 22]
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python進程與線程操作技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》、《Python+MySQL數據庫程序設計入門教程》及《Python常見數據庫操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。