有一个非常大的多线程python2 Web应用程序。在主线程工作的业务逻辑中,子线程主要是数据库操作运行。现在没有使用TreadPoolExecutor,并且在最近的将来无法实现。我想添加另一个线程,它应该处理一定数量的数据(快速)并将结果存储到DataBase(io-operation)中。此操作不会经常执行。
所以,问题是:我应该主要运行休眠线程并等待事件处理数据,或者当有足够数据时最好从main生成新线程并在处理完成时关闭它?请注意,已经有相当多的线程在运行GIL以在它们之间切换。
感谢。
答案 0 :(得分:1)
如果你每天运行一次这个过程,那么创建线程并销毁它的开销可以忽略不计。
正在等待信号的线程(如队列中的消息)不需要CPU,因此不需要花费它来保持它。
这意味着您可以查看其他设计因素:错误处理,稳定性,代码复杂性。
如果你已经确定了错误处理,那么保持线程活着可能会更好,因为这将为你处理一个极端情况:意外地同时运行两个实例。
如果线程可以停止或者您遇到死锁等问题,那么最好杀死任何现有的工作线程并开始干净。