我有一个简单的任务。从 mysql 读取数据 -> 执行一些操作(不是很繁重) -> 然后将结果更新到 mysql DB`。数据库中有 20 个不同的表(每个表约 600000 行)。
我使用 ThreadPoolExecutor(max_workers=20) 编写了一个 python 脚本来优化整体执行时间,但需要大约 40 小时。我想为下次运行优化它。
我尝试运行多个代码实例,但性能不是很显着。 有没有更好的方法可以快速完成任务,例如分布式代码或任何人都知道的东西?
代码的简约算法
conn.autocommit = True
ThreadPoolExecutor(max_workers=20)
- 读取数据并按元组处理,如下
- 使用 TextBlob().detect_language() 检测句子中的语言
- 更新回表
最佳答案
最快的方法是创建插入并每隔几千行提交一次。将所有内容写入文件。删除索引使用 mysql 客户端加载数据并创建索引。优化服务器以进行批量操作。
Python 中的并行性不起作用。 Parallelism in python isn't working right
关于python - mysql读取->处理->更新,针对大数据进行优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48964555/