Python:使用线程处理作业



有一个相当大的多线程python2 web应用程序。在主线程中工作业务逻辑,在子线程中主要运行数据库操作。目前没有使用TreadPoolExecutor,近期无法实现。我想添加另一个线程,它应该处理一定量的数据(快速)并将结果存储到数据库(io-operation)。这个操作不会经常执行。

所以,问题是:我应该运行大多数睡眠线程,等待一个事件来处理数据,或者当有足够的数据并在处理完成时关闭它时更好地从主线程生成新线程?请注意,已经有相当多的线程在运行,以便GIL在它们之间切换。

谢谢。

如果您每天运行这个进程一次,那么创建和销毁线程的开销可以忽略不计。

等待信号(如队列中的消息)的线程不需要CPU,所以不需要让它挂在周围。

这意味着你可以考虑其他设计因素:错误处理、稳定性、代码复杂性。

如果您已经确定了错误处理,那么保持线程存活可能更好,因为这将为您处理一个极端情况:意外地同时运行两个实例。

如果线程可能会停滞,或者你有死锁之类的问题,那么最好杀死所有现有的工作线程,并启动一个新的。

最新更新