多进程的基本使用
1 subprocess 常用函数示例
首先定义一个子进程调用的程序,用于打印一个输出语句,并获取命令行参数
1 import sys 2 print(‘Called_Function.py called, Hello world.‘) 3 try: 4 print(‘Got para‘, sys.argv[1:]) 5 except: 6 pass
再定义主函数,即父进程,分别测试 run() / call() / check_call() / getstatusoutput() / getoutput() / ckeck_output函数。
1 import subprocess 2 3 # subprocess.run() 4 print(‘---------subprocess.run------------‘) 5 re = subprocess.run([‘python‘, ‘Called_Function.py‘, ‘para_1‘, ‘para_2‘]) 6 print(‘subprocess.run() test returns obj:‘, re) 7 print(‘Return code is: {0}, stdout is: {1}, stderr is: {2}‘.format(re.returncode, re.stdout, re.stderr)) 8 9 # subprocess.call() 10 print(‘\n---------subprocess.call------------‘) 11 print(‘subprocess.call() test returns code:‘, subprocess.call([‘python‘, ‘Called_Function.py‘, ‘para_1‘, ‘para_2‘])) 12 13 # subprocess.ckeck_call() 14 print(‘\n---------subprocess.check_call------------‘) 15 try: 16 print(‘subprocess.check_call() test returns code:‘, subprocess.check_call([‘python‘, ‘Called_Function.py‘])) 17 except subprocess.CalledProcessError: 18 print(‘Failed to call.‘) 19 20 # subprocess.getstatusoutput() 21 print(‘\n---------subprocess.getstatusoutput------------‘) 22 print(‘subprocess.getstatusoutput() test returns:‘, subprocess.getstatusoutput([‘python‘, ‘Called_Function.py‘])) 23 24 # subprocess.getoutput() 25 print(‘\n---------subprocess.getstatusoutput------------‘) 26 print(‘subprocess.getoutput() test returns:‘, subprocess.getoutput([‘python‘, ‘Called_Function.py‘])) 27 28 # subprocess.check_output() 29 print(‘\n---------subprocess.check_output------------‘) 30 print(‘subprocess.check_output() test returns:‘, subprocess.check_output([‘python‘, ‘Called_Function.py‘]))
2 利用Popen类与子进程交互
首先定义一个子进程调用的函数,函数中需求一个输入
1 x = input(‘Please input something.‘) 2 print(x, ‘Hello World!‘) 3 # Raise an error 4 print(y)
再定义父进程的函数
1 import subprocess 2 3 prcs = subprocess.Popen([‘python‘, ‘Called_Function_Popen.py‘], 4 stdout=subprocess.PIPE, 5 stdin=subprocess.PIPE, 6 stderr=subprocess.PIPE, 7 universal_newlines=True, 8 shell=True) 9 10 print(‘subprocess pid:‘, prcs.pid) 11 12 re = prcs.communicate(‘These string are from stdin‘) 13 print(‘\nSTDOUT:‘, re[0]) 14 print(‘\nSTDERR:‘, re[1]) 15 if prcs.poll(): 16 print(‘\nThe subprocess has been done‘)
相关阅读
1. subprocess 模块
原文地址:https://www.cnblogs.com/stacklike/p/8167028.html
时间: 2024-10-13 10:02:54