And*_*ndy 5 python parallel-processing mysql-python
我需要从一个巨大的表中读取数据(> 1百万行,16个原始文本)并对其进行一些处理.一行一行地阅读它看起来非常慢(python,MySQLdb),我希望能够一次读取多行(可能并行化).
仅供参考,我的代码目前看起来像这样:
cursor.execute('select * from big_table')
rows = int(cursor.rowcount)
for i in range(rows):
row = cursor.fetchone()
.... DO Processing ...
Run Code Online (Sandbox Code Playgroud)
我试图运行程序的多个实例来迭代表的不同部分(例如,第一个实例将遍历第一个200k行,第二个实例将遍历行200k-400k ......)但问题是第二个实例(以及第三个实例等)需要FOREVER才能进入开始查看行200k以后的阶段.它似乎仍然在处理第一个200k行而不是跳过它们.我在这种情况下使用的代码(第二个实例)是这样的:
for i in range(rows):
#Fetch the row but do nothing (need to skip over 1st 200k rows)
row = cur.fetchone()
if not i in range(200000,400000):
continue
.... DO Processing ...
Run Code Online (Sandbox Code Playgroud)
我怎样才能加快这个过程?有没有一种干净的方法通过python从MySQL数据库进行更快/并行的读取?
EDIT 1:我根据以下建议尝试了"限制"的事情.出于某种原因,虽然当我在我的四核服务器上启动2个进程时,似乎一次只运行一个进程(CPU似乎是在这些进程之间共享时间,而不是每个核心运行一个单独的进程).2个python进程分别使用了14%和9%的CPU.有什么想法可能是错的?
该LIMIT子句可以采用两个参数,其中第一个是起始行,第二个是行计数。
SELECT ...
...
LIMIT 200000,200000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2312 次 |
| 最近记录: |