2014-10-09 47 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绑定的,但多处理可能会让您在翻译和数据库更新中加快速度。