Python教程

记录QT调用耗时的python脚本,不能实时获取python脚本日志问题

本文主要是介绍记录QT调用耗时的python脚本,不能实时获取python脚本日志问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

问题代码:

    QString cmd3 = "D:/gmy/work/svnwork/rep/tensortool/debug/python_env/python.exe C:/temp/test.py";
    QProcess test;
    test.start(cmd3);
    test.waitForStarted();
    while (test.state() == QProcess::ProcessState::Running) {
        if(test.waitForReadyRead(10)){
            qDebug() << test.readAllStandardError();
            qDebug() << test.readAllStandardOutput();
        }
    }
    qDebug() << "结束。。。";
    test.waitForFinished();

test.py测试耗时脚本:

import timefor index in range(4):
    print("hello world!");
    time.sleep(1);

运行程序,理想情况是执行test.py脚本时,每隔1秒,打印一次hello word!

hello world! //1秒

hello world! //2秒

hello world! //3秒

hello world! //4秒

但实际是执行test.py脚本后,等待4秒,返回所有结果:

hello world! \r\n hello world! \r\n hello world! \r\n hello world! \r\n //4秒

原因是python在调用print后不会立即把打印的内容输出到标准输出中,是先把要打印内容放到缓冲区,等缓冲区满或调用sys.stdout.flush() 刷新时,才会把打印内容输出到标准输出中。

所以修改test.py脚本:

import time
import sys
for index in range(4):
    print("hello world!");
    time.sleep(1);
    sys.stdout.flush()

重新执行程序,输出:

hello world! //1秒

hello world! //2秒

hello world! //3秒

hello world! //4秒

 

这篇关于记录QT调用耗时的python脚本,不能实时获取python脚本日志问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!