Python使用多进程

说明

多进程以及多线程在项目中可以说是特别好用了,既可以有好的处理定时任务,也可以在不影响下面代码的情况下去分支完成别的操作
在这里我最常用的有两个模块,一个是multiprocessing.Process,还有一个是os.

os.fork()

模块

Linux 和 Unix 操作系统提供了一个fork()函数创建新的进程,这也就意为这该函数仅适用于Linux和Unix平台。

fork()函数比较特殊,python的os.fork()是唯一调用一次返回两次的函数,因操作系统将当前的进程(父进程)复制了一份新的进程(子进程),然后分别在父进程和子进程内返回。所哟,有时会出现混合打印结果的错误

语法

fork()语法:
功能:为当前进程创建一个子进程
参数:无
返回值:0和子进程PID(在父进程中)
< 0 子进程创建失败
= 0 在子进程中的返回值
> 0 在父进程中的返回值

特点:
(1)子进程会继承父进程几乎全部代码段(包括fork()前所定义的所有内容)
(2)子进程拥有自己独立的信息标识,如PID
(3)父、子进程独立存在,在各自存储空间上运行,互不影响
(4)创建父子进程执行不同的内容是多任务中固定方法

简单创建

Python使用多进程
Python使用多进程

MultiProcessing

模块

os.fork()只适用于linux中,这样在windows中就只能使用process了
在process中常用的方法有

  • is_alive()----判断进程实例是否还在执行
  • join([timeout])----是否等待进程实例执行结束,或等待多少秒;
  • start()----启动进程实例(创建子进程)
  • run()----如果没有给定target参数,对这个对象调用start()方法时,就将执行对象中的run()方法;
  • terminate()----不管任务是否完成,立即终止;

语法

Process([group [, target [, name [, args [, kwargs]]]]])

  • target:表示这个进程实例所调用对象;
  • args:表示调用对象的位置参数元组;
  • kwargs:表示调用对象的关键字参数字典;
  • name:为当前进程实例的别名;
  • group:大多数情况下用不到

简单创建

Python使用多进程

Python使用多进程