避免每次运行脚本时都加载数据库

2024-05-29 03:07:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个Python脚本,加载user/artist/playcount数据集并预测我可能喜欢的艺术家。但是,数据库(我下载的一个.tsv文件)很大,所以需要时间来读取它并将我想要的信息存储到字典中。我如何优化这一点?有没有一种方法可以保存已加载的数据库,以便每次我要进行预测时都不必再次加载它?在

非常感谢。在


Tags: 文件数据方法脚本信息数据库字典tsv
1条回答
网友
1楼 · 发布于 2024-05-29 03:07:41

您可以使用^{} module存储和加载词典。如果创建字典的处理时间相对于将其加载到内存中所需的时间量大(即,如果您的算法很复杂或字典很小),这可能会带来好处。在

如果你的字典仍然很大,你可以使用的一个技巧是将文件指针偏移量存储为字典值。也就是说,当您希望字典值是关于一首歌的一些信息时(例如),与其将信息本身存储在字典中,不如将字节偏移量存储在对应行开始的TSV文件中。然后,当您想访问这些信息时,打开TSV文件,查找偏移量,读取一行,并对其进行解析以构造表示该歌曲的对象。查找速度很快,或者至少比读取整个文件快得多。{或者至少你需要一个数组}来有效地使用一个数组}(或者至少要知道它的上限是多少)。在

{JSON}如果你想用其他语言来保存你的JSON,或者你想用其他语言来保存的话。只有当你的字典不太大的时候,我才推荐这本书。在

您可以尝试的另一种解决方案是首先将字典中的信息存储在数据库中。数据库的组织方式使访问速度更快。Python的标准库包括^{} module,可用于访问SQLite数据库。这应该没问题。但是,如果您已经有一个数据库服务器在运行,或者您有特殊的需要,使得使用单独的数据库服务器更为有利(比如多个进程同时访问数据库),那么您可以使用SQLAlchemy在任何SQL数据库中存储和加载数据。在

为了完整起见,我还将提到^{} module,它可以用来存储几乎任何Python对象,但我不认为您需要直接使用它。有更精简的方法来存储和加载字典类型的数据。在

相关问题 更多 >

    热门问题