有时间,我们需要在一个python脚本中调起另一个python脚本,下面我尝试了一下,
1.父脚本如下:
#coding:utf8
#!/usr/local/bin/python
import time
import datetime
import os
import sys
import traceback
import threading
import subprocess
#######################################################################################################
if __name__ == '__main__':
print "==============================================="
print time.strftime('[%Y-%m-%d %H:%M:%S]')
print "==============================================="
print "analyze start...."
loader=subprocess.Popen(["/usr/bin/python", "/data/home/test/chaildren.py"])
####loader=subprocess.Popen('python chaildren.py') ####错误,会弹出OSError: [Errno 2] No such file or directory
returncode=loader.wait()######阻塞知道子进程完成
print "returncode= %s" %(returncode) ###打印子进程的返回码
print "analyze finised!!!"
2.子脚本如下
#coding:utf8
#!/usr/local/bin/python
import time
import datetime
import os
import sys
import traceback
import threading
if __name__ == '__main__':
print "children start...."
print time.strftime('[%Y-%m-%d %H:%M:%S]')
time.sleep(10)
print time.strftime('[%Y-%m-%d %H:%M:%S]')
print "children finised!!!!"
执行结果如下:
需要注意的几点有:
1.在linux环境下执行的时候可能会提示
OSError: [Errno 2] No such file or directory
这个时候,需要改成如下调用形式
subprocess.Popen(["/usr/bin/python", "/data/home/test/chaildren.py"])
2.默认情况下父子脚本共享输入输出。