我有一个 python 程序,我需要在其中加载和反序列化 1GB 的 pickle 文件。这需要 20 秒,我想要一种机制,可以随时使用泡菜的内容。我看过shared_memory但它的所有使用示例似乎都涉及 numpy 而我的项目不使用 numpy。使用shared_memory或以其他方式实现这一目标的最简单和最干净的方法是什么?
这就是我现在加载数据的方式(每次运行):
def load_pickle(pickle_name):
return pickle.load(open(DATA_ROOT + pickle_name, 'rb'))
Run Code Online (Sandbox Code Playgroud)
我希望能够在两次运行之间编辑模拟代码而无需重新加载泡菜。我一直在搞乱,importlib.reload但对于包含许多文件的大型 Python 程序来说,它似乎真的不太好用:
def main():
data_manager.load_data()
run_simulation()
while True:
try:
importlib.reload(simulation)
run_simulation()
except:
print(traceback.format_exc())
print('Press enter to re-run main.py, CTRL-C to exit')
sys.stdin.readline()
Run Code Online (Sandbox Code Playgroud) 我有一个非常沉重的拼花文件,我需要更改其中一个列的值.一种方法是更新源文本文件中的这些值并重新创建镶木地板文件,但我想知道是否有更便宜,更简单的解决方案.
这几天正在学习AWS。所以,如果这个问题太基础了,我很抱歉。我读过一堆关于 Parquet 相对于 CSV 的优点的开放式和封闭式问题(回答:与其他格式相比,Parquet 格式的优点和缺点是什么?),以及 RecordIO-protobuf 在文件与管道模式方面的优点和缺点(例如,未回答RecordIO 的吸引力是什么)。但是,我还没有看到 RecordIO-protobuf 和 Parquet 之间有任何比较。
以下是我可以从我的研究中收集到的信息:
除了上述两个区别之外,使用 Parquet 与 recordIO 格式的优缺点是什么?此外,搜索“Parquet vs. RecordIO”给我的谷歌结果为零,这让我觉得我正在比较苹果和橙子。
我将不胜感激任何想法。