终止由导入模块启动的子流程



我有一个call_script.py:

def call():
pro = subprocess.Popen(['make_batches.py'])
with open('call.pid', 'w') as file:
file.write(str(pro.pid))
file.close()
pro.wait()
def main():
call()
if __name__ == '__main__':
main()

main_script.py:

import call_script
from pathlib import Path
def main():
call.main()
path = Path.cwd()
pid = path.glob('**/call.pid')
if criteria_met:
#KILL PROCESS
main()

call_script.py每5分钟生产一批,所以我需要等待,但一旦criteria_metmain_script.py中为True,我想终止call.pid中定义的过程,但是main_script.py不会继续超过call.main(),因为它正在等待

您需要以非块的方式调用pro.wait。试着用pro.wait(timeout=1(或者一些适合你的超时。然后在上部循环中进行检查,等待"criteria_met"或子流程。正常退出的TimeoutExpired异常。

相关内容

最新更新