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を使用しましたが、GObject Introspectionに移植されたことはもちろん、そのコードが3年も触れられていないことを心配しています。最も重要なことは、Ubuntu 12.04では使用できなくなったことです。そこで、標準のPythonの方法またはGObject / GTK +の標準の方法で、非同期でタスクを実行する簡単な方法を探しています。 編集:ここに私がやろうとしていることの例といくつかのコードがあります。python-deferコメントで示唆されているように試しましたが、長いタスクを非同期で実行し、UIの読み込みを完了するのを待たずにロードすることはできませんでした。テストコードを閲覧します。 非同期タスクを実行し、終了時に通知を受ける簡単で広く使用されている方法はありますか?