subproces,Process,multiprocessing
subprocess模块
用法:
subprocess的目的就是启动一个进程并和它通信
PIPE表示的是管道,进程间的通信
subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
stdin,stdout,stderr分别表示标准输入,输出,错误句柄。他们可以是PIPE,文件描述符或者文件对象,也可以是None,表示父进程继承。
如果shell为True,程序将通过shell执行。
Popen.poll() 用于检查子进程是否结束。设置并返回returncode属性。
Popen.wait() 等待子进程结束,设置并返回returncode属性。
Popen.communicate(input=None) 与子进程进程交互。向stdin发送数据,或从stdout、stderr中读取数据。communicate()返回的是一个元组tumple,(stdoutdata, stderrdata)。
注意:如果希望通过进程的stdin向其发送数据,在创建Popen对象的时候,参数stdin必须设置为PIPE。同样,如果希望从stdout和stderr获取数据,必须将stdout和stdin设置为PIPE。
>>> p = Popen('ls',shell=True, stdin=PIPE, stdout=PIPE)
>>> out,err = p.communicate('/home')