0

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

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

谢谢。

4

1 回答 1

1

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

等待信号(如队列中的消息)的线程不需要 CPU,因此您无需花费任何费用来保持它挂起。

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

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

如果线程可以停止或者您遇到死锁等问题,那么最好杀死任何现有的工作线程并启动一个干净的工作线程。

于 2014-07-21T09:21:25.827 回答