2014-10-09 87 views
3

我的工作涉及大量的數據處理以及來自各種數據源的數據流和處理,這些數據往往耗費大量數據。我對所有的東西都使用Python,並想知道爲了優化和構建批處理管道,我應該研究哪些Python領域?我知道Spotify已經創建了一些像Luigi這樣的開源變體,但我現在認爲這對我來說有點矯枉過正。到目前爲止,我唯一知道的是研究生成器和懶惰的評估,但想知道我可以在python中使用哪些其他概念和庫進行高效的批處理。一個示例場景是讀取大量json格式的文件,並在使用盡可能少的內存填充到數據庫之前將它們轉換爲csv。 (我需要使用SQL標準數據庫而不是NoSQL)。任何建議將不勝感激。Python數據流水線和流式傳輸

+0

我沒有太多的數據庫經驗,但如果你必須做大規模的數學計算,numpy肯定有一些優秀的特性。正確使用時,可以獲得與編譯語言幾乎相同的速度。 – RoBDoG 2014-10-09 22:26:56

+0

您可以隨時編寫自己的模塊。我工作的地方處理大量數據。但在我們的情況下,我們知道我們獲得的數據的類型(只有3種格式)。所以我們開發了一個有很多工具的小型圖書館來處理這一切。這需要時間,但一旦完成,它爲我們在未來的項目中節省了大量時間 – Beginner 2014-10-09 22:34:16

回答

1

您提到的讀取大量文件,翻譯然後填充數據庫的例子讓我想起了我編寫的一個信號處理應用程序。

我的應用程序(http://github.com/vmlaker/sherlock) 利用多核CPU來並行處理大塊數據(圖像)。我使用了兩個模塊來實現一個乾淨的實現:MPipe用於彙編多級併發流水線,numpy-sharedmem用於在進程之間共享NumPy數組。

如果你想最大限度地提高運行時的性能,並具有多個核心可用,您可以到舞臺你給的例子類似的工作流程:

讀取文件 - >翻譯 - - >更新數據庫

讀取json文件是I/O綁定的,但多處理可能會讓您在翻譯和數據庫更新中加快速度。