取一个「;“永恒”;运行我的Python脚本

取一个「;“永恒”;运行我的Python脚本,python,Python,我有一个Python脚本,它从任何目标文件加载二进制数据并存储在内部 它本身,在一个列表中。问题是存储的文件越大,下次打开它所需的时间就越长。假设我想加载一部700MB的电影并将其存储在脚本文件中。然后想象一下,我第二天打开它,脚本中存储了700 MB的数据。打开它需要一段时间 下面是脚本文件外观的简化布局 第1行:“700MB的电影存储在列表中。” 下面的所有内容:“最终用户使用的所有功能。” 在解释器到达用户等待调用的函数之前, 它必须首先解释第1行上的700 MB数据!这是一个问题 因为谁

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

下面是脚本文件外观的简化布局

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

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

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

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

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


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

Python编译器的工作方式至少让您很难说要做什么

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

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

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

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

您可以使用以下小技巧完成此操作:

制作一个(基本上是一个zip文件)。
使用该模块构建zip文件非常简单。

您究竟是如何以及为什么在Python中存储700Mb的文件的?为什么您的脚本会将数据添加到自身中?同时,显而易见的解决方案是将数据放在单独的文件中,然后在启动时读取并处理它。如果处理时间太长,只需
pickle
并存储结果,如果pickle文件与原始数据文件是最新的,则使用该pickle文件。@dzhioev说得很好。更重要的是,你能描述一下你试图通过这样做来解决的实际用例吗?因为这闻起来有很强烈的病毒味道。@Bakuriu:嗯,它在80年代早期的8位家用电脑中非常有用,在90年代它仍然与拷贝保护相关,我想对于编写病毒的人来说,它的使用时间更长。编写一个程序,在第一次运行时将自己修改成奎因,这总是一个有趣的测试…