我正在尝试对一些调度程序调用进行单元测试。我创建了一个超时,需要在一段时间后调用回调。但是,我不想在测试中启动和停止调度程序。所以,我认为我可以巧妙地使用main_context.pending()
。但是,我似乎无法让它发挥作用:
import glib
import gobject
def ook():
print('Stup!d monkey')
return False
loop = gobject.MainLoop()
glib.timeout_add(100, ook)
当我添加并运行下面的代码时,什么都没有打印出来。
main_context = glib.MainLoop.get_context(loop)
while main_context.pending():
main_context.iteration(False)
当我添加并运行下面的代码时,确实打印了字符串。
loop.run()
知道出了什么问题吗?
答案 0 :(得分:0)
根据API documentation for g_main_context_pending,它
检查任何来源是否有针对给定上下文的待处理事件。
在超过100毫秒之后,您的超时源将不会有任何待处理事件。在此之前,它只会有一个没有附加待处理事件的来源。