Предположим, что скелет кода в Python выглядит следующим образом. Этот код вызывает другой исполняемый скрипт bash для параллельной работы в Ubuntu 18.04.
#!/usr/bin/env python3
#encoding:utf-8
import subprocess
with open(file='subprocess_output.log', mode='a') as file_pointer:
subprocess.Popen(args=['./subprocess.bash'], stdout=file_pointer, stderr=file_pointer)
#Next section
Работает. Но мне любопытно, закрывает ли указатель with
указатель файла и освобождает ресурс, как только основной код переходит к следующему разделу. Разве это не то, что должен делать оператор with
? Чтобы получить и освободить ресурсы безопасно ? Но если дескриптор файла журнала освобождается сразу после вызова, как буфер буфера подпроцесса записывает в журнал позже, когда основной сценарий перешел?
Вероятно, ответ очевиден для любого, кто глубже понимает, как файлы обрабатываются ОС на более низком уровне. Так что любой указатель на онлайн ресурс (каламбур) будет отличным.