Python进程的理解

2015-12-10 summer 更多博文 » 博客 » GitHub »

python

原文链接 http://fee.im/2015/12/python-processing-principle/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


由于python实现了多线程的功能,现在为了提高计算机多核的效率,需要把多线程的程序修改成多进程的计算模式,但是发现进程和线程的执行还是有很大区别。也许之前的工作中没有关注过多线程和多进程的程序吧!

子进程和父进程的工作原理

在python中,使用os.fork()之后,在内存中把父进程的代码及内存分配情况拷贝一份生成子进程的运行空间,这样子进程的所有代码都与父进程一样,两个进程之间的运行是独立的,互不影响。

在Unix/Linux操作系统提供了fork()系统调用,fork()调用一次,返回两次,因为操作系统自动把当前进程(父进程)复制一份(子进程),分别在父进程和子进程返回。子进程永远返回0,父进程返回子进程的id。一个父进程可以fork出很多子进程,所以父进程要记住每个子进程的id

windows没有fork调用,fork()无法在windows运行。multiprocessing模块是跨平台版本的多进程模块,提供了一个Process类来代表一个进程对象。