我正在使用Python的多处理包设置工作线程,并将结果更新到MySQL数据库中。怎样设置才是正确的,这样才不会在每次初始化工作线程时都重新建立数据库连接?
发布于 2018-01-03 01:43:21
每个线程必须使用自己单独的连接。
MySQL协议不是无状态的(例如http)。如果您尝试在多个线程之间使用单个MySQL连接,服务器会对响应哪个请求感到困惑,而客户端线程也会感到困惑,因为错误的线程可能会读取响应。
对于任何其他有状态协议也是如此,例如ftp。
减少开销的更好方法是使用a connection pool。在线程的初始化过程中,每个线程都请求一个连接,池管理器分配线程独占使用池中的一个连接,直到线程使用完它为止。然后,它将连接返回到池,在那里它将被分配给请求连接的另一个线程。
更好的做法是让线程请求连接,而不是在线程初始化时,而是在以后实际需要执行一些数据库工作时。然后在数据库工作完成时释放连接。如果从池中请求连接的开销非常低,那么就没有理由在线程的生命周期中一直使用该连接。
最好是分享一下!
https://stackoverflow.com/questions/48065353
复制相似问题