2012-12-10 120 views
0

我想知道是否有一個選項可以知道何時在python中將任務添加到/添加到隊列中。如何在python中將隊列添加到隊列時運行函數

我有一個應用程序,其中一些進程在線程中運行。根據條件從該線程調用一個函數。被調用的函數將顯示一個窗口。

目前它的工作和窗口正在顯示,我的主要問題是應用程序在窗口顯示時被吊死。我認爲這是由於在線程中顯示窗口的函數的調用。

所以從我的搜索有人建議我在Python中使用隊列。

但是,當我通過python example顯示一個無限循環將在主線程中運行。

如果是這樣的話,那麼我的整個應用程序將無限循環。

+0

我不確定,但看起來你需要使用'threading.Event':[docs](http://docs.python.org/2/library/threading.html#event-objects)instread 'Queue'。或'threading.Condition':[docs](http://docs.python.org/2/library/threading.html#threading.Condition) - 事件對象的更高級版本 –

回答

0

你沒有指定你正在使用的確切的GUI框架。

如果你使用wxPython中,你可以使用wx.CallAfter從另一個線程調用一個函數:

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

從另一個線程:

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

這不會引起你的主循環掛起。

+0

我使用python 2.6.4 PyQt4作爲GUI框架... – Rao