首页 > 解决方案 > 在“with open()”块中使用“while True”循环的后果是什么?

问题描述

例如:

def read_file(f):
    with open(f, 'r') as file_to_read:
        while True:
            line = file_to_read.readline()
            if line:
                yield line
            else:
                time.sleep(0.1)

生成器被另一个函数消耗:

def fun_function(f):
    l = read_file(f)
    for line in l:
        do_fun_stuff()

一个用例是读取一个无限更新的文本文件,例如每秒钟左右添加新行的日志。

据我了解read_file(),只要产生某些东西,该功能就会阻止其他功能。但是由于除非文件中存在新行,否则不应执行任何操作,因此在这种情况下似乎没问题。我的问题是是否有其他理由不喜欢这种阻塞模式(比如性能)?

标签: pythonblocking

解决方案


推荐阅读