0

我有一个 Python 脚本,它从任何目标文件加载二进制数据并存储在自身内部的列表中。问题是存储的文件越大,下次打开它所需的时间就越长。假设我想加载一个 700 MB 的电影并将其存储在我的脚本文件中。然后想象我第二天打开它,其中存储在该脚本中的 700 MB 数据。需要很长时间才能打开!

这是脚本文件外观的简化布局。

第 1 行:“700 MB 电影存储在列表中。”

以下所有内容:“最终用户使用的所有功能。”

在解释器到达用户等待调用的函数之前,它必须首先解释第 1 行的 700 MB 数据!这是一个问题,因为谁愿意等待一个小时只是为了打开一个脚本?

那么,如果我像这样更改文件的布局会有帮助吗?

第一行:“最终用户使用的所有功能。” 下面:“700 MB 的电影存储在一个列表中。”

那会有帮助吗?或者解释器是否必须在调用函数之前遍历所有 700 MB?

4

1 回答 1

1

Python 编译器的工作方式至少可以说让你想做的事情变得非常非常困难。

首先,每次更改脚本时(例如通过添加文件),它都会在执行之前触发一个新的编译周期(将 .py 文件转换为 .pyc 文件)。

其次,每次导入模块时,都会将大块数据加载到内存中(无论是在导入时还是在您第一次访问数据时)。

这不仅速度慢,而且不安全且容易出错。

我猜你打算做的是分发一个包含数据的文件。

你也许可以使用这个小技巧来做到这一点:

制作一个可执行的 python 包(基本上是一个 zip 文件)。使用zipfile模块构建 zip 文件非常容易。

于 2013-08-28T18:27:51.857 回答