시작시 디스크에서 사소한 양의 데이터를 읽어야하는 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 년 동안 만지지 않은 것에 대해 걱정하고 있습니다. 가장 중요한 것은 우분투 12.04에서 더 이상 사용할 수 없다는 것입니다. 따라서 표준 Python 방식이나 GObject / GTK + 표준 방식으로 작업을 비동기식으로 쉽게 실행할 수있는 방법을 찾고 있습니다.
편집 : 여기 내가하려는 일의 예가있는 코드가 있습니다. python-defer
의견에서 제안한대로 시도했지만 긴 작업을 비동기 적으로 실행하고 UI가 끝나기를 기다릴 필요없이로드 할 수 없었습니다. 테스트 코드를 찾아보십시오 .
비동기 작업을 쉽고 광범위하게 실행하는 방법이 있고 완료되면 알림을 받습니까?
async_call
기능이 내가 필요한 것일 것이라고 생각합니다 . 조금 확장하고 답변을 추가하여 테스트 후 수락하고 크레딧을 줄 수 있습니까? 감사!