我有一个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_met
在main_script.py
中为True,我想终止call.pid
中定义的过程,但是main_script.py
不会继续超过call.main()
,因为它正在等待
您需要以非块的方式调用pro.wait。试着用pro.wait(timeout=1(或者一些适合你的超时。然后在上部循环中进行检查,等待"criteria_met"或子流程。正常退出的TimeoutExpired异常。