Wsparcie dla biblioteki z możliwością przerywania
Przegląd
Aspose.Slides udostępnia mechanizm przetwarzania z możliwością przerwania dla długotrwałych zadań związanych z prezentacjami, takich jak deserializacja, serializacja i renderowanie. Mechanizm ten opiera się na klasach InterruptionToken i InterruptionTokenSource.
Obiekt InterruptionToken może być przypisany do LoadOptions i przekazany do konstruktora Presentation. Gdy wywołana zostanie metoda InterruptionTokenSource.interrupt, powiązane długotrwałe zadanie zostaje przerwane.
Biblioteka z możliwością przerwania
Aspose.Slides for Python via Java udostępnia klasy InterruptionToken i InterruptionTokenSource. Umożliwiają one przerywanie długotrwałych zadań, takich jak deserializacja, serializacja i renderowanie.
- InterruptionTokenSource jest źródłem tokenu(ów) przekazywanych do LoadOptions.setInterruptionToken.
- Gdy wywołana zostanie metoda LoadOptions.setInterruptionToken, a instancja LoadOptions zostanie przekazana do konstruktora Presentation, wywołanie InterruptionTokenSource.interrupt przerywa każde długotrwałe zadanie powiązane z tym Presentation.
Poniższy fragment kodu demonstruje przerwanie działającego zadania:
from concurrent.futures import ThreadPoolExecutor
import time
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import InterruptionTokenSource, LoadOptions, Presentation, SaveFormat
token_source = InterruptionTokenSource()
def convert_presentation():
load_options = LoadOptions()
load_options.setInterruptionToken(token_source.getToken())
presentation = Presentation("sample.pptx", load_options)
try:
presentation.save("sample.ppt", SaveFormat.Ppt)
finally:
presentation.dispose()
with ThreadPoolExecutor(max_workers=1) as executor:
conversion_task = executor.submit(convert_presentation) # Uruchom akcję w osobnym wątku.
time.sleep(10) # Limit czasu.
token_source.interrupt() # Zatrzymaj konwersję.
conversion_task.result()
FAQ
Jaki jest cel biblioteki przerywania w Aspose.Slides?
Zapewnia mechanizm przerywania długotrwałych operacji—takich jak ładowanie, zapisywanie lub renderowanie prezentacji—zanim zostaną zakończone. Jest to przydatne, gdy czas przetwarzania musi być ograniczony lub zadanie nie jest już potrzebne.
Jaka jest różnica między InterruptionToken a InterruptionTokenSource?
- InterruptionToken jest przekazywany do API Aspose.Slides i sprawdzany podczas długotrwałych operacji.
- InterruptionTokenSource jest używany w Twoim kodzie do tworzenia tokenów oraz wywoływania przerwań poprzez wywołanie interrupt.
Jakie zadania można przerywać?
Każde zadanie Aspose.Slides, które przyjmuje InterruptionToken, takie jak ładowanie prezentacji przy użyciu Presentation lub zapisywanie przy użyciu Presentation.save, może zostać przerwane.
Czy przerwanie następuje natychmiast?
Nie. Przerwanie jest współpracujące: operacja okresowo sprawdza token i zatrzymuje się, gdy tylko wykryje, że wywołano interrupt.
Co się stanie, jeśli wywołam interrupt po zakończeniu zadania?
Nic—wywołanie nie ma żadnego efektu, jeśli odpowiadające zadanie już się zakończyło.
Czy mogę ponownie użyć tego samego InterruptionTokenSource dla wielu zadań?
Tak—ale po wywołaniu interrupt na tym źródle, wszystkie zadania korzystające z jego tokenów zostaną przerwane. Używaj oddzielnych źródeł tokenów, aby zarządzać zadaniami niezależnie.