web-dev-qa-db-ja.com

PyGObject:Gio.File.copy_async()はUbuntu12.04に存在しません

GIOリファレンスマニュアル によると、_Gio.File_にはメソッド_copy_async_があります。 Ubuntu 12.04では、このメソッドを呼び出そうとするとAttributeErrorが表示されます。

非同期コピーの代わりに何を使用する必要がありますか?

Gio.OutputStream.splice_async()を使用できますが、進行状況のコールバックが得られません

4
Florian Diesch

あなたが引用しているリファレンスマニュアルはPython用ではありません。 gobjectのイントロスペクションでは、pythonマニュアルはもう利用できません( チュートリアル のみ))が、このマニュアルではpythonマップされた機能。Cの多くの関数は、他の言語からアクセスできるようになっています。

Gioが必要ない場合、行きたい方法の1つは、単にpython組み込み関数を使用することですか?

concurrent.futuresモジュール 非同期で処理を行います(バックポート ここ )。これで、次のようなことができるはずです。

import concurrent.futures
import shutil

with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
    executor.submit(shutil.copy, "test1.txt", "test1_new.txt").add_done_callback(
      process_result )
    executor.submit(shutil.copy, "test2.txt", "test2_new.txt").add_done_callback(
      process_result)

このバージョンの詳細 ここ および ここ

2
xubuntix