python输出日志out.log相关问题(缓存机制)

现象:nohup python total_test619.py > out.log 2>&1 &,total_test619.py功能如下,首先计算1+3的值,然后将该值print出来,之后等待5分钟,重新运行之前的函数,输出结果,之后往复,等待时间,输出结果等,这个里面是输出的日志为什么在程序刚开始运行的时候会输出内容,等等代理5min后,第二次运行函数的时候,结果就不输出到out.log中了。

解释:

在执行 nohup python total_test619.py > out.log 2>&1 & 命令时,你可能遇到第二次运行函数时结果不再输出到 out.log 文件中的问题。这通常是由于 Python 的输出缓冲机制导致的。

Python 在处理输出时,会有一个输出缓冲区。当使用 print 语句时,输出不会立即写入到文件中,而是先存储在内存中的缓冲区里。只有当缓冲区满或者遇到 flush 操作时,输出才会真正写入到文件或其他目的地。

在这个例子中,如果你在程序中没有加入 flush 操作,或者缓冲区设置得比较大,你可能会发现,只有当缓冲区刷新时,输出才会写入到 out.log 文件中。这通常发生在程序结束或者缓冲区自然刷新时。

为了解决这个问题,可以在 print 语句中加入 flush 关键词,强制刷新缓冲区,确保输出及时写入到文件中。例如:

python 复制代码
print("Hello", flush=True)

这样,每次 print 都会将输出立即写入到文件中,而不是等待缓冲区刷新。这可以确保你在需要的时间内看到预期的输出

相关推荐
Cachel wood2 分钟前
Django REST framework (DRF)中的api_view和APIView权限控制
javascript·vue.js·后端·python·ui·django·前端框架
麒麟而非淇淋6 分钟前
Day13 苍穹外卖项目 工作台功能实现、Apache POI、导出数据到Excel表格
java
暮色尽染10 分钟前
Python 正则表达式
开发语言·python
Rverdoser13 分钟前
redis延迟队列
数据库·redis·缓存
小爬虫程序猿14 分钟前
利用Java爬虫获取速卖通(AliExpress)商品详情的详细指南
java·开发语言·爬虫
Java编程乐园16 分钟前
Java中以某字符串开头且忽略大小写字母如何实现【正则表达式(Regex)】
java·正则表达式
阿七想学习17 分钟前
数据结构《排序》
java·数据结构·学习·算法·排序算法
幽络源小助理19 分钟前
Python使用requests_html库爬取掌阅书籍(附完整源码及使用说明)
python·html·python爬虫·爬虫教程·requests_html·爬取书籍·掌阅
取个名字真难呐20 分钟前
LossMaskMatrix损失函数掩码矩阵
python·深度学习·矩阵
南宫理的日知录22 分钟前
「Python数据科学」标量、向量、矩阵、张量与多维数组的辨析
python·numpy·数据科学