Unterstützung für eine unterbrechbare Bibliothek
Übersicht
Aspose.Slides bietet einen unterbrechbaren Verarbeitungsmechanismus für langwierige Präsentationsaufgaben, wie Deserialisierung, Serialisierung und Rendering. Dieser Mechanismus basiert auf den Klassen InterruptionToken und InterruptionTokenSource.
Ein InterruptionToken kann LoadOptions zugewiesen und dem Konstruktor von Presentation übergeben werden. Wenn InterruptionTokenSource.interrupt aufgerufen wird, wird die zugehörige langwierige Aufgabe unterbrochen.
Unterbrechbare Bibliothek
Aspose.Slides für Python über Java stellt die Klassen InterruptionToken und InterruptionTokenSource bereit. Sie ermöglichen das Unterbrechen langwieriger Aufgaben wie Deserialisierung, Serialisierung und Rendering.
- InterruptionTokenSource ist die Quelle der Token, die an LoadOptions.setInterruptionToken übergeben werden.
- Wenn LoadOptions.setInterruptionToken aufgerufen wird und die Instanz von LoadOptions dem Konstruktor von Presentation übergeben wird, unterbricht das Aufrufen von InterruptionTokenSource.interrupt jede langwierige Aufgabe, die mit dieser Presentation verknüpft ist.
Das folgende Code‑Snippet demonstriert das Unterbrechen einer laufenden Aufgabe:
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) # Führt die Aktion in einem separaten Thread aus.
time.sleep(10) # Zeitüberschreitung.
token_source.interrupt() # Stoppt die Konvertierung.
FAQ
Was ist der Zweck der Aspose.Slides‑Interrupt‑Bibliothek?
Sie bietet einen Mechanismus, um langwierige Vorgänge – wie das Laden, Speichern oder Rendern von Präsentationen – vor dem Abschluss zu unterbrechen. Dies ist nützlich, wenn die Verarbeitungszeit begrenzt werden muss oder die Aufgabe nicht mehr benötigt wird.
Was ist der Unterschied zwischen InterruptionToken und InterruptionTokenSource?
- InterruptionToken wird an die Aspose.Slides‑API übergeben und während langwieriger Vorgänge geprüft.
- InterruptionTokenSource wird in Ihrem Code verwendet, um Token zu erstellen und Unterbrechungen auszulösen, indem Sie interrupt aufrufen.
Welche Vorgänge können unterbrochen werden?
Jeder Aspose.Slides‑Vorgang, der ein InterruptionToken akzeptiert – zum Beispiel das Laden einer Präsentation mit Presentation oder das Speichern mit Presentation.save – kann unterbrochen werden.
Findet die Unterbrechung sofort statt?
Nein. Die Unterbrechung ist kooperativ: Der Vorgang prüft periodisch das Token und stoppt, sobald er erkennt, dass interrupt aufgerufen wurde.
Was passiert, wenn ich interrupt aufrufe, nachdem eine Aufgabe bereits abgeschlossen ist?
Nichts – der Aufruf hat keine Wirkung, wenn die entsprechende Aufgabe bereits beendet ist.
Kann ich dieselbe InterruptionTokenSource für mehrere Aufgaben wiederverwenden?
Ja – nachdem Sie interrupt für diese Quelle aufgerufen haben, werden alle Aufgaben, die deren Token verwenden, unterbrochen. Verwenden Sie separate Token‑Quellen, um Aufgaben unabhängig zu verwalten.