Я думаю, что смог воспроизвести вашу ошибку, написав простую программу на Python, которая печатает случайные числа и затем засыпает:
import random
import time
import sys
random.seed(time.time())
print 'starting random numbers'
#sys.stdout.flush()
print 'big block of text' * 2000
#sys.stdout.flush()
count = 3
while count > 0:
sleeper = random.randint(1, 5)
r = random.randint(1000, 9000)
print r, 'sleeping for', sleeper, 'seconds'
#sys.stdout.flush()
time.sleep(sleeper)
count -= 1
print 'random numbers finished, closing'
#sys.stdout.flush()
Интересным моментом здесь является то, что java-код будет отображать первые несколько отпечатков, но затем будет ждать, пока программа не будет завершена, прежде чем она напечатает остальные. Проблема с этим примером кода заключается в том, что выходные данные скрипта Python буферизуются в stdout, поэтому приложение Java не может их прочитать. Он работает правильно, когда вы раскомментируете команды sys.stdout.flush ().
Я бы попробовал добавить flush () в вашу программу на python и посмотреть, решит ли это проблему.