Я использую следующий python-код для выполнения C-программы (исполняемый файл):
proc = Popen(cmd, stdout=PIPE, bufsize=10)
thread = Thread(target=streamstdout, args=(proc.stdout, conn))
thread.daemon = True
thread.start()
while 1:
time.sleep(1)
conn.settimeout(0.01)
try:
data = conn.recv(1024)
except socket.timeout:
continue
except socket.error:
print 'Connection break during execution.'
if proc.poll() == None:
proc.terminate()
print 'Execution terminated'
break
data = data.strip()
if data: print 'Received: ', data
Соединение является TCP-соединением.
Все правильно, когда я запускаю скрипт python в моей консоли с
python script.py
Загрузка ЦП исполняемого файла составляет около 30%, как и ожидалось.
Но если я запускаю python-скрипт во время загрузки в crontab или запускаю скрипт с
nohup python script.py &
и подавить этим вызовом выходные сообщения Python-скрипта, исполняемый файл всегда работает с максимальной загрузкой ЦП (98% -100%).
Я думаю, что проблема заключается в выводе python-скрипта, который не может быть выведен на консоль ... но почему это происходит?
Я благодарен за каждую идею или мнение.
Обновление: я добавил цикл while. Но я не думаю, что это имеет отношение к проблеме.