Python3.7线程使用100%CPU并导致进程挂起。如何避免呢?
我正在运行一个Python脚本,该脚本正在生成线程,其中使用re模块分析具有复杂正则表达式模式的文本。在某些情况下,当输入字符串很长时,Python解释器占用我的t2.micro EC2机器100%的CPU(1个vCPU,1 GB的RAM),脚本停止工作(可能是因为缺乏资源) 我试图找到一种在超时后终止线程的方法,但在我的例子中,不可能检查循环中的任何标志,因为线程从未退出regex函数。另外,不要扼杀整个流程也很重要——理想情况下,应用程序应该全天候运行 也许有可能以某种方式监视线程占用的资源,并在指定阈值后引发某种异常 我的脚本非常简单的示例是以下代码:Python3.7线程使用100%CPU并导致进程挂起。如何避免呢?,python,regex,multithreading,python-3.x,python-multithreading,Python,Regex,Multithreading,Python 3.x,Python Multithreading,我正在运行一个Python脚本,该脚本正在生成线程,其中使用re模块分析具有复杂正则表达式模式的文本。在某些情况下,当输入字符串很长时,Python解释器占用我的t2.micro EC2机器100%的CPU(1个vCPU,1 GB的RAM),脚本停止工作(可能是因为缺乏资源) 我试图找到一种在超时后终止线程的方法,但在我的例子中,不可能检查循环中的任何标志,因为线程从未退出regex函数。另外,不要扼杀整个流程也很重要——理想情况下,应用程序应该全天候运行 也许有可能以某种方式监视线程占用的资源
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)
如果没有代码示例,很难准确地知道您在这里要求什么。您能否创建一个重现您的问题的基本示例?如果罪魁祸首是regex,原因在于灾难性的回溯。请根据您的场景展示一些形式的示例,看看如何最好地帮助您,这取决于您如何构建代码和使用的范例。感谢您的回答,然而,我的问题不是如何优化正则表达式模式,而是如何在不影响进程的情况下终止或停止一个超时(挂起)的python线程。