У меня есть 2 кода Python, один из которых - mar.py, а другой - sub.py
## mar.py
import os
import subprocess
import time
print('MASTER PID: ', os.getpid())
proc = subprocess.Popen(["D:\Miniconda3\python.exe", r"C:\Users\J\Desktop\test\sub.py"], shell=False)
def terminator():
proc.terminate()
time.sleep(5)
terminator()
mar.py
просто создает подпроцесс, используя sub.py
, и завершает его через 5 секунд.
## sub.py
import atexit
import time
import os
print('SUB PID: ', os.getpid())
os.chdir("C:\\Users\\J\\Desktop\\test")
def handle_exit():
with open("foo.txt", "w") as f:
f.write("Life is too short, you need python")
atexit.register(handle_exit)
while True:
print('alive')
time.sleep(1)
Я думал, что foo.txt
будет создано до завершения подпроцесса sub.py
, но ничего не происходит.Если я запускаю sub.py
самостоятельно и завершаю его, он создает foo.txt
, как я планировал.В чем заключается это различие, и как я все еще могу заставить его создавать foo.txt
, даже если он запускается как подпроцесс?
Я использую Windows 10 (64-битная версия) и Python 3.6.5 (32-битная версия)