Ошибка в том, что цикл не прерывает и exception не ловит.
Вообще-то, может, мне и с другого конца надо было зайти Суть задачи такова:
прога1 --- генерит данные (модель там, то да сё)
прога2 --- читает вывод от проги1 и делает всякое. По достижении полного счастья, она завершается. Если пускать "прога1 | прога 2" просто из командной строки, то прога1 завершается по завершении проги2 без вопросов. Если я все это дело пускаю из скрипта на питоне (с разыми параметрами модели) командой типа "os.sys('прога1 | прога2')" то прога1 продолжает работать даже после завершения проги2. Если вставлять прерывание цикла при невозможности записи в stdout, то работает как надо. Но не вариантом с exceptions.