【发布时间】:2021-11-16 04:51:53
【问题描述】:
目前我有以下实现将list 的dictionaries 写入文件。下面的file_limit_counter 将被初始化为0,而file_limit 现在将被初始化为50。因此,每当计数器等于文件限制时,它就会开始将输出写入新文件。计数器的方法是将输出分成多个文件:
self.file = self.generate_new_micro_file_name()
for response_dict in all_response_dict_list:
if file_limit_counter == file_limit:
self.propagate_log_msg('wrote {} records '.format(file_limit))
self.file = self.generate_new_micro_file_name()
file_limit_counter = 0
with open(self.file, 'a', encoding="utf8") as open_out_file:
json.dump(response_dict, open_out_file)
open_out_file.write('\n')
file_limit_counter += 1
列表all_response_dict_list 将包含如下内容:
somelist = [{"Name":"a1","Age":"24"},{"Name":"a2","Age":"26"}]
我的意图是在我的输出文件中包含这样的内容:
{"Name":"a1","Age":"24"}
{"Name":"a2","Age":"26"}
...
上述方法效果很好。但是,当涉及到大量词典(例如 5000)时,它往往会放慢一点(大约需要 10 分钟)。因此,如果有人已经遇到过这种情况,那将会很有帮助。我认为,如果我们可以并行执行上述相同的操作,即同时将多个字典写入同一个文件而不是一个一个地写入,我认为会花费更少的时间。
【问题讨论】:
-
在这种情况下(我认为)工作管理器打开输出文件的方法是不合适的。每次打开同一个文件时,操作系统都必须先搜索到最后,然后才能将数据写入其中。所以,打开一次,当你达到限制时关闭它,然后打开你的下一个文件
-
谢谢你@DarkKnight 你在那里。我也和你在同一页上,但只是大声说出来看看是否还有其他选择。
-
按照 DarkKnight 的建议,我可以在 1.1 秒内写出 50,000 个名字。我会在下面发帖。
-
@TimRoberts 1.1s?你在用算盘吗;-)
-
关闭,这是 Windows。打开和写入 1000 个文件需要一秒钟。
标签: python json python-3.x