PyGObject: Gio.File.copy_async () não existe no Ubuntu 12.04

4

De acordo com o Manual de referência do GIO Gio.File tem um método %código%. No Ubuntu 12.04 estou recebendo um copy_async quando tento chamar esse método.

O que devo usar para copiar assíncrono?

Eu poderia usar AttributeError , mas isso não me dá um retorno de chamada de progresso

    
por Florian Diesch 05.08.2012 / 00:54

1 resposta

2

O manual de referência que você está citando não é para python. Estou ciente de que, com a introspecção do gobject, nenhum manual do Python está mais disponível (apenas um tutorial ), mas este manual não documenta a funcionalidade mapeada por python. Muitas funções do C não foram disponibilizadas em outros idiomas.

Uma maneira que você pode querer ir, se você não precisa do Gio, é simplesmente usar funções embutidas do Python?

O módulo concurrent.futures faz as coisas de maneira assíncrona (backported aqui ). Com isso você deve ser capaz de fazer algo assim:

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)

Mais sobre esta versão aqui e aqui .

    
por xubuntix 05.08.2012 / 08:31