Высокая загрузка процессора исполняемым файлом с потоком Python - PullRequest
0 голосов
/ 07 сентября 2018

Я использую следующий 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. Но я не думаю, что это имеет отношение к проблеме.

...