5
如何在Python GObject Introspection应用程序中运行异步任务
我正在编写一个Python + GObject应用程序,该应用程序在启动时需要从磁盘读取大量数据。同步读取数据,大约需要10秒钟才能完成读取操作,在此期间,UI的加载会延迟。 我想异步运行任务,并在就绪时获得通知,而不会阻塞UI,大致类似: def take_ages(): read_a_huge_file_from_disk() def on_finished_long_task(): print "Finished!" run_long_task(task=take_ages, callback=on_finished_long_task) load_the_UI_without_blocking_on_long_task() 过去,我曾使用GTask进行此类操作,但我担心它的代码在3年内没有被触及,更不用说移植到GObject Introspection了。最重要的是,它在Ubuntu 12.04中不再可用。因此,我正在寻找一种以标准Python方式或GObject / GTK +标准方式异步运行任务的简便方法。 编辑:这是一些代码,其中包含我正在尝试执行的示例。我已经python-defer按照注释中的建议进行了尝试,但是我无法异步运行长任务并让UI加载而不必等待它完成。浏览测试代码。 是否有一种简单且广泛使用的方式来运行异步任务并在完成任务时得到通知?