【发布时间】:2010-12-23 16:57:24
【问题描述】:
在 Python 中将仅包含数字数据的记录转换为固定格式字符串并将它们写入文件的最快方法是什么?例如,假设record 是一个巨大的列表,由具有id、x、y 和wt 属性的对象组成,我们经常需要将它们刷新到外部文件。可以使用以下 sn -p 完成刷新:
with open(serial_fname(), "w") as f:
for r in records:
f.write("%07d %11.5e %11.5e %7.5f\n" % (r.id, r.x, r.y, r.wt))
但是我的代码花费了太多时间来生成外部文件,而在两次刷新之间做它应该做的事情的时间太少了。
修改原问题:
我在编写服务器软件时遇到这个问题实时预处理形式。许多消费者系统都是 Matlab 应用程序。
我在下面列出了到目前为止我收到的一些建议(感谢)一些 cmets:
- 只转储更改,而不是整个数据集:我实际上已经在这样做了。由此产生的变更集仍然很大。
- 使用二进制(或其他更有效的)文件格式:我非常受制于 Matlab 可以合理有效地读取的内容,此外格式应该与平台无关。
- 使用数据库:我实际上是在尝试绕过当前的数据库解决方案,这种解决方案被认为既慢又麻烦,尤其是在 Matlab 方面。
- 将任务划分为单独的进程: 目前转储代码正在其自己的线程中运行。然而,由于 GIL,它仍然使用相同的内核。我想我可以将其移至完全独立的进程。
【问题讨论】:
标签: python performance large-data-volumes