12.3 Python进程模块
12.3.1 os模块
进程本质上是由操作系统来管理的,os模块自然也少不了一些和进程相关的操作
调用system函数是最简单的创建进程的方式,函数只有一个参数,就是要执行的命令。
os.fork 函数调用系统API并创建子进程,但是fork函数在windows上并不存在
12.3.2 subprocess模块
标准库os中的system函数和exec系列函数虽然都可以调用外部调令(调用外部命令也是创建进程的一种方式)
大部分 subprocess模块调用外部命令的函数都使用类似的参数,其中args是必传参数,其他可选参数:
args:可以是字符串或者序列类型。
bufsieze:指定缓存。0表示无缓冲1表示缓冲,其他表示缓冲大小,负值表示使用系统默认缓冲,通常表示完全缓冲。默认值为0表示没有缓冲
stdin,stdout,stderr:分别表示程序的标准输入,输出,错误句柄。
preexec_fn:只在Unix平台有效
close_fds:在windows中,如果close_fds被设置为true,则新创建的子进程将不会继承父进程的输入、输出与错误管道,所以不能将其设置为true。
其他将在书本246页
12.3.3 multiprocessing.Process
标准库multiprocessing模块提供了和线程模块threading类似的API来实现多进程,multiprocessing模块创建的是子进程而不是子线程,所以可以有效的避免全局解释器和有效地利用多核CPU的性能。
multiprocessing.Process对象使用方法: