Python3.7线程使用100%CPU并导致进程挂起。如何避免呢?

时间:2018-07-05 10:20:54

标签: python regex multithreading python-3.x python-multithreading

我正在运行一个Python脚本,该脚本生成线程,在其中使用re模块分析具有复杂正则表达式模式的文本。在某些情况下,当输入字符串很长时,Python解释器最多占用我的t2.micro EC2计算机的100%CPU(1个vCPU,1 GB RAM),并且脚本停止工作(可能是由于缺乏资源) )。

我试图找到一种在超时后杀死线程的方法-但在我的情况下,无法检查循环中的任何标志,因为线程永远不会退出regex函数。同样重要的是不要终止整个过程-理想情况下,应用程序应该24/7运行。

也许可以以某种方式监视线程占用的资源,并在指定的阈值之后引发某种异常?

我的脚本的非常非常简化的示例是以下代码:

from concurrent.futures import ThreadPoolExecutor
import re

pool = ThreadPoolExecutor(max_workers)


def check_difficult_regex(pattern, string):
    # time-consuming operations in here

pool.submit(check_difficult_regex, pattern, text)

0 个答案:

没有答案