【问题标题】:python: adding a reset function to a threaded applicationpython:向线程应用程序添加重置功能
【发布时间】:2013-05-20 15:03:54
【问题描述】:

我的python代码运行一个需要很长时间的函数:

Navigation() 

在执行过程中,我想要一个重置按钮。为了使重置按钮起作用,我使用了线程,并且我设法通过按下按钮将我的代码放入线程回调函数中。如何终止当前正在运行的Navigation() 并调用另一个新的Navigation() 函数?谢谢。

提前致谢。

【问题讨论】:

  • 您需要发布更多代码,以便其他人可以看到您在说什么。例如,您是否已经在使用 Thread、Thread.start() 等...?
  • 我的 Navigation() 在 while 循环中运行,但每个循环都需要很长时间。如果有按钮按下,我需要立即终止该功能。
  • GPIO.add_event_detect(GPIO_RESET, GPIO.FALLING, callback=my_callback) 这就是我现在接收中断的方式。

标签: python python-2.7 python-3.x


【解决方案1】:

如果您的导航函数有一个循环执行,您可以检查一下“中断”变量是否设置为 True。如果是这样,您可以在检查期间终止导航功能:

def navigation(self):
    # reset self.interrupt as appropriate
    while not self.interrupt:
        pass # Do something here
        # You will want some other exit condition as well, of course.

def button_pressed_response(self):
    self.interrupt = True
    self.navigation()

如果您可以访问指定的多线程库,则可以使用更优雅的回调函数并简化重置逻辑。

【讨论】:

  • 我确实有一个循环,但每个循环都需要很长时间才能执行。如果按下按钮,我需要立即终止该功能
【解决方案2】:

这个答案几乎总结了终止线程的问题和陷阱:

https://stackoverflow.com/a/325528

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 2013-03-06
    • 2015-11-21
    • 2010-09-05
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多