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

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

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

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