タグ付けされた質問 「pygi」

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の読み込みを完了するのを待たずにロードすることはできませんでした。テストコードを閲覧します。 非同期タスクを実行し、終了時に通知を受ける簡単で広く使用されている方法はありますか?

2
PYGTKからPYGI:同等のgtk.timeout_add
PYGIを使用するようにいくつかのPythonコードを変換しましたが、この行を変換する方法がわかりません。 gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork) 明らかに、PYGTKとPYGIの違いは本当にわからないので、新しいコードでは from gi.repository import Gtk from gi.repository import AppIndicator3 as appindicator ここに示すようにhttps://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators#Python_version 私が変換しようとしている完全なコードはここにありますhttp://pastebin.com/raw.php?i=aUtASRpy に相当するものは何ですか gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork) PYGIで? また、PYGIがユニティインジケーターを作成する最も近代的な方法であると想定しています。 また、インジケーターに状態を通知する(プッシュとプル)のではなく、インジケーターが何かの状態をチェックすることが最善であると想定しています。毎秒何かをチェックするpythonプログラムを使用しても大丈夫ですか? ありがとう!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.