Поддержка прерываемой библиотеки

Обзор

Aspose.Slides предоставляет механизм прерываемой обработки для длительных задач, связанных с презентациями, таких как десериализация, сериализация и рендеринг. Этот механизм основан на классах InterruptionToken и InterruptionTokenSource.

InterruptionToken может быть назначен объекту LoadOptions и передан в конструктор Presentation. Когда вызывается InterruptionTokenSource.interrupt, связанная длительная задача прерывается.

Прерываемая библиотека

Aspose.Slides for Python via Java предоставляет классы InterruptionToken и InterruptionTokenSource. Они позволяют прерывать длительные задачи, такие как десериализация, сериализация и рендеринг.

Следующий фрагмент кода демонстрирует прерывание выполняющейся задачи:

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)  # Запустить действие в отдельном потоке.
    time.sleep(10)  # Тайм-аут.
    token_source.interrupt()  # Остановить конвертацию.
    conversion_task.result()

Часто задаваемые вопросы

Какова цель библиотеки прерывания Aspose.Slides?

Она предоставляет механизм прерывания длительных операций — таких как загрузка, сохранение или рендеринг презентаций — до их завершения. Это полезно, когда время обработки должно быть ограничено или задача более не нужна.

В чём разница между InterruptionToken и InterruptionTokenSource?

  • InterruptionToken передаётся в API Aspose.Slides и проверяется во время длительных операций.
  • InterruptionTokenSource используется в вашем коде для создания токенов и инициирования прерываний вызовом interrupt.

Какие задачи можно прерывать?

Любая задача Aspose.Slides, принимающая InterruptionToken — например, загрузка презентации с помощью Presentation или сохранение через Presentation.save — может быть прервана.

Прерывание происходит мгновенно?

Нет. Прерывание является кооперативным: операция периодически проверяет токен и останавливается, как только обнаруживает, что был вызван interrupt.

Что происходит, если вызвать interrupt после завершения задачи?

Ничего — вызов не имеет эффекта, если соответствующая задача уже завершена.

Можно ли повторно использовать один и тот же InterruptionTokenSource для нескольких задач?

Да — но после вызова interrupt для этого источника все задачи, использующие его токены, будут прерваны. Используйте отдельные источники токенов для независимого управления задачами.