在这篇文章里,我将列出一种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 |
“Python实现多进程运行”上的2条回复
前排围观,来学习一个!
最近在写一个爬虫,就在想着一个多线程加速的Quick Start来着。
哈哈,可以,不过,在计算密集型的地方用多线程,IO密集型的地方还是要多进程试试,这样是不是会更好一些呢?