我注意到在python中,当我使用print语句时,它不会立即打印。我发现你可以使用sys.stdout.flush()
使它在控制台中显示打印件。
这是从脚本获得即时反馈的正确方法,还是有更好的方法?
我主要想要这个用于调试。我有一个挂机,并试图找到代码停滞的地方,但由于我的打印语句没有显示,我在错误的地方搜索,认为我的代码没有达到打印声明。 (我终于找到了断点,这可能是一种更好的调试方式,但有时打印立即打印更方便。)
答案 0 :(得分:0)
stdout将如何以及何时刷新自身取决于您正在使用的打印功能的实现,您尝试打印的字符串,可能是操作系统等。
有趣的是,stdout在遇到换行符时似乎是冲洗的,但我并不总是信任它,或者我知道直到运行时我的字符串是否包含换行符,所以我使用{{当我想确保立即打印的内容并且我并不过分关注性能时,我会定期使用C,Java和Python。我发现这个特别有用的地方(即消息的时间非常重要)是:在代码的多线程部分中,在阻止IO调用之前可能会抛出异常的代码附近。
作为一个实际的例子,这样的东西似乎是flush()
的自然用法(对不起它是用C ++而不是Python)
flush()
因为没有刷新,它将保留第一个字符串,直到它获得printf("Connecing to IP Camera at %s...", ipCamAddr);
cout.flush();
// open a network connection to the camera
printf("Done!\n");
,连接成功/失败后