将只保留数字数据的记录转换为固定格式字符串并将它们写入Python文件中的最快方式是什么?例如,假设record
是一个包含属性为id
,x
,y
和wt
的对象的巨大列表,我们经常需要将它们刷新到外部文件。冲洗可以用下面的代码片段来完成:将数值数据快速转换为Python中的固定宽度格式文件
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))
但是我的代码是花费了太多的时间产生外部文件中留下太少时间做什么是应该的冲洗之间的事。
Amendmend原来的问题:
我就遇到了这个问题,同时编写跟踪拉几个“生产者”系统信息设置一个全球性的记录,并转发到任何更改的服务器软件以预处理的形式实时或接近实时地记录到“消费者”系统。许多消费者系统都是Matlab应用程序。
我在下面列出了一些建议,我有一些评论到目前为止(感谢)获得:
- 只输出变化,而不是整个数据集:我其实已经在做。由此产生的变化集仍然很大。
- 使用二进制(或其他一些更有效的)文件格式:我几乎由什么Matlab的能合理高效,除了该格式应该是独立于平台的读取限制。
- 使用数据库:我实际上试图绕过当前的数据库解决方案,它被认为既缓慢又麻烦,尤其是在Matlab方面。
- 将任务划分为单独的进程:目前转储代码正在其自己的线程中运行。但是由于GIL,它仍然在使用相同的核心。我想我可以把它移到完全独立的进程。