【发布时间】:2018-08-04 11:53:58
【问题描述】:
我有一个简单的任务。从mysql读取数据->执行一些操作(不是很重)->然后将结果更新回mysql DB`。数据库中有 20 个不同的表(每个表约 600000 行)。
我使用ThreadPoolExecutor(max_workers=20) 编写了一个python 脚本来优化整体执行时间,但这需要大约40 个小时。我想为下一次运行优化它。
我尝试运行多个代码实例,但性能不是很重要。 有没有更好的方法来快速完成任务,比如分布式代码或任何人都知道的东西?
简约的代码算法
conn.autocommit = True
ThreadPoolExecutor(max_workers=20)
- 读取数据并逐个元组处理如下
- 使用 TextBlob().detect_language() 从句子中检测语言
- 更新回表
【问题讨论】:
-
这个问题的答案介于“是的,微不足道的”和“不,40 小时是你能做的最好的”之间。究竟是哪一个将取决于您到底在做什么,因此您应该分享您的代码(相关和最小化的部分),否则,很遗憾我们帮不了您太多。
-
描述事物。如果你不知道大部分时间在哪里浪费,你怎么能做得更好?也许它的mysql也许它的处理代码。 GIL 也只影响线程,你可以多进程。
-
感谢您添加一些详细信息。
TextBlob().detect_language()向 google api 发送请求。这将限制您的吞吐量(mysql 部分可能会对执行速度产生大约 0.01% 的影响)。尝试使用其他软件(本地安装)。
标签: python mysql optimization distributed-computing