python进程模块-subprocess,Process,multiprocessing

本文介绍了Python的subprocess模块,包括如何启动进程、与进程通信,如使用PIPE进行父子进程间的数据传递。同时,讨论了Popen对象的方法如poll()、wait()和communicate(),以及如何避免管道通信中的死锁问题。还提到了多线程在执行任务中的应用,强调了在多线程共享数据时选择合适的数据结构以避免问题。
摘要由CSDN通过智能技术生成

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')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值