我有几百万份文件。我要做的很简单,处理文档以提取我需要的信息,并将其加载到数据库中。我用Python语言和SQLAlchemy来做这件事。另外,我使用multiprocessing
来利用我机器上的所有内核。文档是包含大量文本的XML。数据库是定义了自定义关系模式的MySQL。
然而,它的运行速度非常慢,在6-7个小时内只加载了大约50k个文档。
有什么方法可以加快这项任务的执行速度吗?
发布于 2014-01-21 03:59:25
有时RDBMS不是答案,这种情况的一个标志是如果你的数据彼此没有关系,例如,如果每个文档都是独立的。
如果您想让一些非结构化数据可搜索,请考虑使用pylucene构建可搜索索引
或者可能将数据放在某个非关系数据库中,如mongodb
在任何情况下,尝试确定系统的哪个部分正在减慢进程,我猜是数据库或文件系统,如果这是mysql,您所能做的就是在上面投入更多的硬件。
另一种优化广泛使用IO的系统的方法是使用像twisted这样的库切换到异步编程,但它有一些学习曲线,所以最好100%确保它是必要的。
https://stackoverflow.com/questions/21242362
复制相似问题