【问题标题】:how to run a function when somthing gets added to Queue in python当某些东西被添加到python中的队列时如何运行一个函数
【发布时间】:2012-12-10 18:35:46
【问题描述】:

我想知道是否有一个选项可以知道何时将任务添加/附加到 python 中的队列。

我有一个应用程序,其中一些进程在线程中运行。根据条件,从该线程调用函数。被调用的函数会显示一个窗口。

目前它正在工作并且窗口正在显示,我的主要问题是应用程序在显示窗口时被挂起。我认为这是由于在线程中调用了显示窗口的函数。

所以从我的搜索中有人建议我在 python 中使用队列。

但是当我通过 python example 显示一个无限循环将在主线程中运行。

如果是这样,那么我的整个应用程序将处于无限循环中。

【问题讨论】:

  • 我不确定,但看起来您需要使用 threading.Event: docs instread of Queue。或者threading.Condition:docs——事件对象的更高级版本

标签: python multithreading


【解决方案1】:

您没有指定您正在使用的确切 GUI 框架。

如果你使用 wxPython,你可以使用 wx.CallAfter 从另一个线程调用函数:

def ShowWindow(txt):
    wx.MessageBox(txt)

来自另一个线程:

wx.CallAfter(ShowWindow,'message from another dimension')

这不会导致你的主循环挂起。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    相关资源
    最近更新 更多