龙空技术网

Python如何实现多进程?超简单!

长颈鹿睡觉 586

前言:

此时兄弟们对“python实现多进程”大体比较珍视,咱们都想要了解一些“python实现多进程”的相关内容。那么小编在网络上收集了一些对于“python实现多进程””的相关资讯,希望我们能喜欢,姐妹们快快来学习一下吧!

Python包multiprocessing提供了进行多进程处理的API,可以进行本地和远程的并发操作。

multiprocessing模块采用了子进程的方式,能充分利用多CPU的处理能力。

multiprocessing模块通过Process类创建进程。

引入Process类

from multiprocessing import Process
定义进程启动方法

定义函数,在该函数内编写希望进程执行的任务。

def work(msg):    print(msg)
创建进程

使用Process类创建进程,target指定进程启动的入口方法,args指定方法参数

p1 = Process(target=work, args=("process 1"))
启动进程

调用Process的start方法启动进程。

p1.start()
获取进程号

在子进程中可以通过os.getppid()获取父进程ID,通过os.getpid()获取子进程ID

import osimport timedef work(msg):    print("parent pid:" + str(os.getppid()))    print("my pid:" + str(os.getpid()))    print(msg)    time.sleep(10000)
阻塞主进程

如果希望子进程执行完再结束主进程,可以通过join方法阻塞主进程。

p1.join()
完整代码
from multiprocessing import Processimport osimport timedef work(msg):    print("parent pid:" + str(os.getppid()))    print("my pid:" + str(os.getpid()))    print(msg)    time.sleep(10000)if __name__ == '__main__':    p1 = Process(target=work, args=('process 1',))    p1.start()    p1.join()    print("------------end------------------")
Process类的函数和变量

函数或变量

说明

run()

代表进程的入口方法,直接调用run方法不会启动子进程,仍然是单进程处理。

start()

启动进程,会启动子进程,多进程处理。

join()

阻塞主进程,直到子进程执行完毕。

is_alive()

返回进程是否活动

terminate()

终止进程

kill()

终止进程,使用kill方式

close()

释放Process对象资源

name

进程名称

daemon

进程守护标志,当进程退出时,会尝试终止所有子进程

pid

进程ID

exitcode

退出代码

authkey

身份验证秘钥

sentinel

数字句柄

标签: #python实现多进程