python进程类subprocess的一些操作方法例子
subprocess.Popen用来创建子进程。
1)Popen启动新的进程与父进程并行执行,默认父进程不等待新进程结束。
defTestPopen():
importsubprocess
p=subprocess.Popen("dir",shell=True)
foriinrange(250):
print("otherthings")
2)p.wait函数使得父进程等待新创建的进程运行结束,然后再继续父进程的其他任务。且此时可以在p.returncode中得到新进程的返回值。
defTestWait():
importsubprocess
importdatetime
print(datetime.datetime.now())
p=subprocess.Popen("sleep10",shell=True)
p.wait()
print(p.returncode)
print(datetime.datetime.now())
3)p.poll函数可以用来检测新创建的进程是否结束。
defTestPoll():
importsubprocess
importdatetime
importtime
print(datetime.datetime.now())
p=subprocess.Popen("sleep10",shell=True)
t=1
while(t<=5):
time.sleep(1)
p.poll()
print(p.returncode)
t+=1
print(datetime.datetime.now())
4)p.kill或p.terminate用来结束创建的新进程,在windows系统上相当于调用TerminateProcess(),在posix系统上相当于发送信号SIGTERM和SIGKILL。
defTestKillAndTerminate():
p=subprocess.Popen("notepad.exe")
t=1
while(t<=5):
time.sleep(1)
t+=1
p.kill()
#p.terminate()
print("newprocesswaskilled")
5)p.communicate可以与新进程交互,但是必须要在popen构造时候将管道重定向。
defTestCommunicate():
importsubprocess
cmd="dir"
p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
(stdoutdata,stderrdata)=p.communicate()
ifp.returncode!=0:
print(cmd+"error!")
#defaultlythereturnstdoutdataisbytes,needconverttostrandutf8
forrinstr(stdoutdata,encoding='utf8').split("\n"):
print(r)
print(p.returncode)
defTestCommunicate2(): importsubprocess cmd="dir" #universal_newlines=True,itmeansbytextwaytoopenstdoutandstderr p=subprocess.Popen(cmd,shell=True,universal_newlines=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT) curline=p.stdout.readline()
while(curline!=""): print(curline) curline=p.stdout.readline() p.wait() print(p.returncode)
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下