微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 无限循环卡住了

如何解决Python 无限循环卡住了

我正在编写一个程序,它监视日志文件中的新数据,并对其进行一些分析。 逻辑如下

import time

class LogReader():

    def __init__(self):
        self.logpath = "/path/to/log/file"
        pass

    def line_processing_function(self,line):
        """
        This function processes the line
        """
        # Do something
        return
    
    def read_file(self):
        with open(self.logpath) as f:
            return f.readlines()

    def run_main_loop(self):
        data = self.read_file()
        while True:
            time.sleep(1) 
            new_data = self.read_file()

            for line in new_data[len(data): ]:
                self.line_processing_function(line)
            
            data = new_data

if __name__ == '__main__':
    lr = LogReader()
    lr.run_main_loop()

这个函数在大多数情况下都能很好地工作,但有时它会“卡住”,例如,它陷入了某种其他阻塞循环。按 ^C 对问题进行排序,while 循环返回,处理继续。我无法确定何时卡住的模式,因为它卡在看似随机代码部分。

我不能透露确切的 line_processing_function,但它涉及非常基本的文本匹配、正则表达式和发送请求。

我的问题是,问题可能来自哪里?可能是因为日志文件(由另一个程序连续写入)正在更改?或者它是 line_processing_function一个明确问题?此外,我该如何进一步调查此问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。