使用Python线程的可执行文件的CPU负载较高

时间:2018-09-07 11:01:22

标签: python python-multithreading

我使用以下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

conn是TCP连接。 当我在控制台中使用

启动python脚本时,一切都正确
python script.py

可执行文件的CPU负载约为预期的30%。

但是,如果我在启动时在crontab中启动python-script或使用

nohup python script.py & 

并通过调用此命令抑制python脚本的输出消息,可执行文件将始终以最大CPU负载(98%-100%)运行。 我认为问题是无法在控制台上输出的python-script的输出...但是为什么会这样?

我很感谢每一个想法或意见。

更新:我附加了while循环。但是我认为这与问题无关。

0 个答案:

没有答案