Поддержка прерываемой библиотеки
Обзор
Aspose.Slides предоставляет механизм прерываемой обработки для длительных задач, связанных с презентациями, таких как десериализация, сериализация и рендеринг. Этот механизм основан на классах InterruptionToken и InterruptionTokenSource.
InterruptionToken может быть назначен объекту LoadOptions и передан в конструктор Presentation. Когда вызывается InterruptionTokenSource.interrupt, связанная длительная задача прерывается.
Прерываемая библиотека
Aspose.Slides for Python via Java предоставляет классы InterruptionToken и InterruptionTokenSource. Они позволяют прерывать длительные задачи, такие как десериализация, сериализация и рендеринг.
- InterruptionTokenSource является источником токена(ов), передаваемых в LoadOptions.setInterruptionToken.
- Когда вызывается LoadOptions.setInterruptionToken и экземпляр LoadOptions передаётся в конструктор Presentation, вызов InterruptionTokenSource.interrupt прерывает любую длительную задачу, связанную с этой Presentation.
Следующий фрагмент кода демонстрирует прерывание выполняющейся задачи:
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 для этого источника все задачи, использующие его токены, будут прерваны. Используйте отдельные источники токенов для независимого управления задачами.