PyMysql 在多线程下的问题
最近在使用 Python 重写 LightDB 的第二层的数据转换程序,因为之前 PHP 版的转换程序效率太低了(主要是设计思路的问题)。使用 Python 换了个思路来实现。
现在发现了 PyMysql 在多线程下工作异常,示例代码大致如下:
执行效果如下:
通过搜索引擎找到这个 Issue (https://github.com/PyMySQL/PyMySQL/issues/422),在 7 楼有提到,
1 | See https://www.python.org/dev/peps/pep-0249/#threadsafety |
解决方案,在这个 Issue 中也提到了,就是一个 process/thread 中开一个 mysql 的连接。
Oh my god !!!!!
这显然并不好!
另外,@oflyhigh O哥给找到了一个小哥写的库,https://github.com/jkklee/pymysql-connpool ,这个库的目的就是实现一个 Mysql connection pool 来解决多线程的问题。准备尝试下这个库。感谢 O哥。