• К чему(как называется категория) можно отнести ИТ отдел в строительной копании?

    pindschik
    @pindschik
    ФЫВА ОЛДЖ
    1) Основная деятельность/Проектно-строительная деятельность/
    2) Вспомогательные службы/Административно-хозяйственные/Служба эксплуатации/Общие вопросы
    Ответ написан
    Комментировать
  • Наставник-разработчик отказался от junior-специалиста. Что делать?

    xez
    @xez
    TL Junior Roo
    Как вы считаете, что мне лучше делать в этой ситуации?

    1. Перестать верить в деда мороза и розовых единорогов.
    2. Работать дальше.
    3. Учиться, учиться и еще раз учиться.
    Ответ написан
    Комментировать
  • Как работает перенаправление вывода скрипта python?

    Vindicar
    @Vindicar
    RTFM!
    Скорее всего, проблема в работе с одним файлом через два дескриптора (один - stdout твоего скрипта, второй - stdout вызываемого). Попробуй принудительно сбрасывать данные в файл:
    print('Пытаемся запустить файл 1:', flush=True)
    Ответ написан
    1 комментарий
  • Как работает перенаправление вывода скрипта python?

    Можно обвернуть системный вызов в async функцию и использовать await.
    https://realpython.com/async-io-python/#the-asynca...

    Добавлено:
    а нельзя ли просто сделать вывод в stdout и поточное чтение с вывода:
    python prog1.py | python prod2.py
    ?
    Ответ написан
    Комментировать
  • Как работает перенаправление вывода скрипта python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Или вызывайте вот так:
    print(subprocess.getoutput('./1.py'))
    Так вы дождётесь полного выхлопа.
    Но если выхлопа много, то лучше запускать иначе, чтобы получить выходной пайп и вычитывая его в цикле слать всё на stdout __main__

    UPD: Дополню ответ, а то часть оказалась в комментариях.

    Такое происходит потом, что при перенаправлении выхлопа в файл происходит буфферизация. Накопительный буффер сбрасывается в файловую систему по факту своего заполнения или принудительно (по команде flush или по факту завершения процесса).

    При выхлопе, направленном в терминал, буфферизации нет и всё, что выводится, попадает в терминал сразу.
    Но если бы каждый байт писался в файловую систему без буффера, то это быо бы чертовски медленно и заставляло бы постоянно дёргаться картеку (реальную или виртуальную) лочного девайса, на котором у нас файловая система.
    Так и получается, что
    - сперва в stdout материнского процесса попадает некий текст,
    - потом запускаеется дочений процесс и что-то пишет в свой stdout,
    - потом дочерний процесс закрывается и сбрасывает накопившийся буффер, который перенаправляется по цепочке в выходной файл,
    - потом закрывается материнский процесс и весь его недозаполненный буфер тоже сбрасывается в файл.
    Ответ написан
    2 комментария