我正在运行一个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)