多进程编程2

==========python开发技术详解

os.system起的子进程会结束后将控制权返回python;
os.exec会接管python进程,不会将控制权返回python,如在python里调用exec将记事本打开,则原来的python解释器就会退出。

exit 可以温和的方式退出进程;
abort会以暴力方式退出进程
///////////////////
subprocess作为进程管理的高级模块,提供了一个类和两个函数来管理进程。
subprocess.popen中的shell:当shell为false时,popen将调用os.execvp执行对应的程序。但shell为true时,若命令为字符串,popen直接调用系统shell来执行指定的程序。

若命令为一个序列,则第一项是命令字符串,其他项是命令的附加参数。

若需要等待子进程的结束,可以使用popen类的wait()函数
若需要管理子进程的输入和输出,可以改变popen类的stdin、stdout和stderr

在输出结果后,stdout成为一个可读的输出对象

  因为数据是缓存在内存里,所以当数据量很大时,不要用communicate

 subprocess的call和check_all是对popen的一种简化,call可以直接生成子进程,并等待子进程结束。check_all和call的区别是,若返回值不为0则触发异常CallProcessError,异常对象的returncode属性中有返回值

猜你喜欢

转载自www.cnblogs.com/testzcy/p/12756207.html