Согласно Справочное руководство GIO Gio.File
имеет метод copy_async
. В Ubuntu 12.04 я получаю AttributeError
, когда пытаюсь вызвать этот метод.
Что я должен использовать вместо этого для асинхронного копирования?
Я мог бы использовать Gio.OutputStream.splice_async()
, но это не дает мне обратный вызов прогресса
Справочное руководство, которое вы цитируете, не для python. Мне известно, что с помощью самоанализа gobject больше не доступно руководство по питону (только учебник ), но это руководство не документирует отображенную функциональность python. Многие функции из C не были доступны из других языков.
Один из способов, которым вы можете пойти, если вам не требуется Gio, - это просто использовать встроенные функции 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)