Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3.7线程使用100%CPU并导致进程挂起。如何避免呢?_Python_Regex_Multithreading_Python 3.x_Python Multithreading - Fatal编程技术网

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

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函数。另外,不要扼杀整个流程也很重要——理想情况下,应用程序应该全天候运行 也许有可能以某种方式监视线程占用的资源

我正在运行一个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线程。