Python:如何从外部停止函数执行

Python:如何从外部停止函数执行,python,function,exception,functional-programming,execution,Python,Function,Exception,Functional Programming,Execution,我有以下问题: 我有一个GUI,有两个按钮:“运行”和“停止” 当我按下“运行”按钮时,将执行功能a 在没有任何if语句的情况下,如何通过按“stop”按钮停止执行?在函数a中,有大量的数学计算,因此如果我只在函数a中加一个循环,并在每次循环过程中检查一次,如果按下“停止”按钮,这将花费太多时间 我想立即停止函数a的执行,而不是在整个计算完成时。例如,用try/catch将函数内部的代码边界化,但在函数外部引发异常,那么我可以随时停止函数的执行,直到到达if语句。我allready试图用一个线程

我有以下问题:

我有一个GUI,有两个按钮:“运行”和“停止”

当我按下“运行”按钮时,将执行功能a

在没有任何if语句的情况下,如何通过按“stop”按钮停止执行?在函数a中,有大量的数学计算,因此如果我只在函数a中加一个循环,并在每次循环过程中检查一次,如果按下“停止”按钮,这将花费太多时间

我想立即停止函数a的执行,而不是在整个计算完成时。例如,用try/catch将函数内部的代码边界化,但在函数外部引发异常,那么我可以随时停止函数的执行,直到到达if语句。我allready试图用一个线程来解决这个问题,但它不起作用,因为我不知道如何启动一个线程,并向自定义线程类提交一些参数

这里有一个小Pythoncode,它应该显示我的意思:

class GUI():
    def __init__(self):
        #Initialization of Button "Run",connect Button "Run" to function a
        #Initialization of Button "Stop",connect Button "Stop" to function b

    def a(self):
        """calculation of a ton of mathematical stuff, can take MORE THAN 
           FIVE MINUTES to be finished, could be grouped in
           individual functions to border the function-calls with try/catch,
           but would be inefficient and inelegant"""
        pass

    def b(self):
        """Should stop the execution of function a immediately """

请提供一个示例,说明代码的结构。没有它很难回答你的问题。您使用的是什么GUI框架?用户事件如何触发函数调用?至于你的线程评论,我建议你多读一些关于它们的文章,并尝试使用它们(以及多处理)来找出答案。如果您希望GUI在后台操作期间保持响应,则可能需要多个执行线程或进程。您需要看看Davis Beazley关于生成器的长篇演讲,该演讲名为generators:Final Frontier。利用
yield from
语句,您可以创建一个可以在您指定的任何点停止的函数。@skrrgwasme我添加了一些代码,GUI用PyQt5编码,按钮用“信号和插槽”技术连接到函数。请提供一个显示代码结构的示例。没有它很难回答你的问题。您使用的是什么GUI框架?用户事件如何触发函数调用?至于你的线程评论,我建议你多读一些关于它们的文章,并尝试使用它们(以及多处理)来找出答案。如果您希望GUI在后台操作期间保持响应,则可能需要多个执行线程或进程。您需要看看Davis Beazley关于生成器的长篇演讲,该演讲名为generators:Final Frontier。利用
yield from
语句,您可以创建一个可以在您指定的任何点停止的函数。@skrrgwasme我添加了一些代码,GUI用PyQt5编码,按钮用“信号和插槽”技术连接到函数