分类
Python学习

Python实现多进程运行

(在苹果系统下,如果文章中的图片不能正常显示,请升级Safari浏览器到最新版本,或者使用Chrome、Firefox浏览器打开。)

在这篇文章里,我将列出一种python下的实现多进程并发执行程序的方法。我们经常需要通过并发来实现一些功能,为了加速计算或者最大程度利用CPU等等。Python中有一种方法可以实现多进程并发执行,我们需要导入python库“multiprocessing”。

我们来先看一下一个最简单的代码:

import multiprocessing

class MyProcess(multiprocessing.Process):
    def __init__(self,msg):
        multiprocessing.Process.__init__(self)
        self.msg = msg

    def run(self):
        print(msg)


if __name__ == '__main__':
    p = MyProcess("123456")
    p.start()
  print("pid:",p.pid)
    

在这个例子中,我们需要定义一个类,专门用于要创建的新的进程,这个类需要定义一个初始化函数,可以传入所需要的参数。另外,我们还需要定义一个函数run(),这个函数在创建了进程之后会自动执行,有点类似于C语言中的main()函数,就是一个入口。注意,这个类需要在类名之后的括号里添加multiprocessing.Process。这种方法被称作派生进程。

 

在这个类的外部,我们首先新建一个实例化的类,

然后调用start()函数来启动一个进程。

进程启动后,我们还可以通过属性pid来获取这个进程的进程号,

以及通过is_alive()方法来判断进程是否生存,

通过join()方法等待进程运行。

当我们需要结束进程的时候,可以等进程自然结束或者使用terminate()方法来结束进程。

 

多进程还有一种方法是使用进程池,这篇文章中我就暂时不写了,之后我有机会再写。

 

版权声明
本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。
本文地址: https://blog.ailemon.net/2017/09/18/python-muti-processing-programing/
All articles are under Attribution-NonCommercial-ShareAlike 4.0

关注“AI柠檬博客”微信公众号,及时获取你最需要的干货。


“Python实现多进程运行”上的2条回复

哈哈,可以,不过,在计算密集型的地方用多线程,IO密集型的地方还是要多进程试试,这样是不是会更好一些呢?

回复 N0vaD3v 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

16 − 12 =

如果您是第一次在本站发布评论,内容将在博主审核后显示,请耐心等待