日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python创建进程的方法_python进程的状态、创建及使用方法详解

發布時間:2025/3/15 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python创建进程的方法_python进程的状态、创建及使用方法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了python進程的狀態、創建及使用方法。分享給大家供大家參考,具體如下:

進程以及狀態

1. 進程

程序:例如xxx.py這是程序,是一個靜態的

進程:一個程序運行起來后,代碼+用到的資源 稱之為進程,它是操作系統分配資源的基本單元。

不僅可以通過線程完成多任務,進程也是可以的

2. 進程的狀態

工作中,任務數往往大于cpu的核數,即一定有一些任務正在執行,而另外一些任務在等待cpu進行執行,因此導致了有了不同的狀態

就緒態:運行的條件都已經慢去,正在等在cpu執行

執行態:cpu正在執行其功能

等待態:等待某些條件滿足,例如一個程序sleep了,此時就處于等待態

進程的創建-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)

說明

創建子進程時,只需要傳入一個執行函數和函數的參數,創建一個Process實例,用start()方法啟動

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]]]]])

target:如果傳遞了函數的引用,可以任務這個子進程就執行這里的代碼

args:給target指定的函數傳遞的參數,以元組的方式傳遞

kwargs:給target指定的函數傳遞命名參數

name:給進程設定一個名字,可以不設定

group:指定進程組,大多數情況下用不到

Process創建的實例對象的常用方法:

start():啟動子進程實例(創建子進程)

is_alive():判斷進程子進程是否還在活著

join([timeout]):是否等待子進程執行結束,或等待多少秒

terminate():不管任務是否完成,立即終止子進程

Process創建的實例對象的常用屬性:

name:當前進程的別名,默認為Process-N,N為從1開始遞增的整數

pid:當前進程的pid(進程號)

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进程的状态、创建及使用方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。