Prise en charge d'une bibliothèque interrompable

Vue d’ensemble

Aspose.Slides fournit un mécanisme de traitement interrompable pour les tâches de présentation de longue durée, telles que la désérialisation, la sérialisation et le rendu. Ce mécanisme repose sur les classes InterruptionToken et InterruptionTokenSource.

Un InterruptionToken peut être attribué à LoadOptions et passé au constructeur de Presentation. Lorsque InterruptionTokenSource.interrupt est appelé, la tâche longue associée est interrompue.

Bibliothèque interrompable

Aspose.Slides for Python via Java fournit les classes InterruptionToken et InterruptionTokenSource. Elles vous permettent d’interrompre des tâches de longue durée telles que la désérialisation, la sérialisation et le rendu.

Le fragment de code suivant montre comment interrompre une tâche en cours :

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)  # Exécuter l'action dans un thread séparé.
    time.sleep(10)  # Délai d'attente.
    token_source.interrupt()  # Arrêter la conversion.
    conversion_task.result()

FAQ

Quel est le but de la bibliothèque d’interruption Aspose.Slides ?

Elle fournit un mécanisme pour interrompre les opérations longues—comme le chargement, l’enregistrement ou le rendu de présentations—avant qu’elles ne se terminent. Cela est utile lorsqu’il faut limiter le temps de traitement ou que la tâche n’est plus nécessaire.

Quelle est la différence entre InterruptionToken et InterruptionTokenSource?

Quelles tâches peuvent être interrompues ?

Toute tâche Aspose.Slides qui accepte un InterruptionToken—comme le chargement d’une présentation avec Presentation ou l’enregistrement avec Presentation.save—peut être interrompue.

L’interruption se produit-elle immédiatement ?

Non. L’interruption est coopérative : l’opération vérifie périodiquement le jeton et s’arrête dès qu’elle détecte que interrupt a été appelé.

Que se passe-t-il si j’appelle interrupt après qu’une tâche soit déjà terminée ?

Rien—l’appel n’a aucun effet si la tâche correspondante est déjà terminée.

Puis-je réutiliser le même InterruptionTokenSource pour plusieurs tâches ?

Oui—mais après avoir appelé interrupt sur cette source, toutes les tâches utilisant ses jetons seront interrompues. Utilisez des sources de jetons séparées pour gérer les tâches de manière indépendante.