將只保留數字數據的記錄轉換爲固定格式字符串並將它們寫入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,它仍然在使用相同的核心。我想我可以把它移到完全獨立的進程。