我想在下载csv文件时使用celery-progress来显示进度条
我的任务遍历cvs文件列表,打开每个文件,过滤数据并生成一个包含csv过滤文件的zip文件夹(参见下面的代码)
但是,根据调用set_progress的位置,任务将花费更多时间
如果我计算(和set_progress)处理的文件,即使对于具有100000条记录的文件,速度也是相当快的
但是如果我计算文件中的记录,这将为用户提供更多的信息,它将时间延长了20%
我不明白为什么
我如何处理此问题?
for file in listOfFiles:
# 1 - count for files processed
i += 1
progress_recorder.set_progress(i,numberOfFilesToProcess, description='Export in progess...')
records = []
with open(import_path + file, newline='', encoding="utf8") as csvfile:
spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')
csv_headings = ','.join(next(spamreader))
for row in spamreader:
# 2 - count for records in each files processed (files with 100000 records)
# i += 1
# progress_recorder.set_progress(i,100000, description='Export in progess...')
site = [row[0][positions[0]:positions[1]]]
filtered_site = filter(lambda x: filter_records(x,sites),site)
for site in filtered_site:
records.append(','.join(row))发布于 2021-06-30 15:03:55
如果有非常多的记录,那么很可能不需要更新每个记录的进度,并且每次在后端更新进度的开销可能会变得很大。相反,您可以在内部循环中执行以下操作:
if i % 100 == 0:
# update progress for every 100th entry
progress_recorder.set_progress(i,numberOfFilesToProcess, description='Export in progress...')https://stackoverflow.com/questions/68182266
复制相似问题