基本上,我目前正在做以下工作:
for bigLogFile in bigLogFileFolder:
with open(bigLogFile) as bigLog:
processBigLogfile(bigLog)
由于我从网络驱动器加载此日志文件,所以执行时间的最大部分是等待文件加载。然而,processBigLogFile的执行时间也不是很简单。在
所以我的基本想法是让进程异步,允许程序在处理当前日志的同时加载下一个日志文件。 看起来很简单,但是我对异步编程没有任何经验,而且asyncio似乎提供了很多不同的方法来实现我想做的事情(使用Task或Future似乎是可能的选择)。在
有人能告诉我最简单的方法吗?Asyncio不是严格必需的,但我强烈希望使用内置库
应该注意的是,日志文件必须按顺序处理,所以我不能简单地并行加载和处理文件
听起来你希望文件打开是并行的,但处理是顺序的。我不确定这是否能节省你的时间。在
如果使用简单的ThreadPoolExecutor可以实现同样的效果,则不需要复杂的异步编码:
由于ThreadPoolExecutor在幕后使用一个队列,所以处理顺序将保留到
max_workers=1
的时间。在另外,如果你有足够的内存来保存所有/大多数文件,它也能正常工作。如果是内存受限的,则必须等待ThreadPoolExecutor完成一些任务。在
相关问题 更多 >
编程相关推荐