【发布时间】:2016-11-30 13:17:16
【问题描述】:
我正在尝试侦听不断更新的日志文件并不断使用这些行。 问题是我有多个文件要听。日志由 jboss 实例分隔,我必须将它们一起使用才能将它们插入数据库。
我有一个很好的例子,说明如何从问题5419888 中连续读取文件,但是这段代码只按时间读取一个文件。我试过下面的代码来读取它们,但它只听它在文件数组中找到的第一个文件。
如何多线程同时处理所有文件?
import time
from glob import glob
def follow(thefile):
thefile.seek(0,2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
if __name__ == '__main__':
for log in glob("/logs/xxx/production/jboss/yyy*/xxx-production-zzzz*/xxx-production-zzzz*-xxx-Metrics.log"):
logfile = open(log, "r")
loglines = follow(logfile)
for line in loglines:
print line,
【问题讨论】:
-
也许你想要的是为每个文件创建一个线程并将你定义的 follow() 函数设置为目标函数。
-
@Rawing 我尝试将其应用于我的情况,但我不能很好地理解它。不过谢谢。
-
@theVoid 上面的回复差不多,它对我有用。感谢您的帮助!
标签: python multithreading file-io