如何在父进程停止时退出子进程?
以下是我的代码。
我想在有KeyboardInterrupt时停止所有执行。
import os, sys
scripts = ["script_1.py","script_2.py"]
try:
for script in scripts:
command = 'python ' + script
os.system(command)
except KeyboardInterrupt:
os._exit(1)
except Exception as e:
raise e
答案 0 :(得分:0)
由于您尝试在另一个Python脚本中执行Python脚本,让我们以Pythonic方式执行此操作,并为importlib.import_module
删除os.system
import os
import importlib
scripts = ['script_1.py', 'script_2.py']
for filename in scripts:
modulename, ext = os.path.splitext(filename)
importlib.import_module(modulename)
如果您的脚本如下:
if __name__ == '__main__':
# code here
print('hello')
它不起作用,因为if __name__ == '__main__':
用于确保仅当文件作为脚本(而不是模块)执行时才会执行if
下的部分。
因此,在这种情况下,最好的办法是:
script_1.py
:
def main():
# code here
print('hello')
在主脚本中:
import os
import importlib
scripts = ['script_1.py', 'script_2.py']
for filename in scripts:
modulename, ext = os.path.splitext(filename)
module = importlib.import_module(modulename)
module.main()