중단 가능한 라이브러리 지원
개요
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()
FAQ
Aspose.Slides 중단 라이브러리의 목적은 무엇입니까?
프레젠테이션을 로드, 저장 또는 렌더링하는 등 장시간 실행되는 작업을 완료되기 전에 중단할 수 있는 메커니즘을 제공합니다. 처리 시간을 제한하거나 작업이 더 이상 필요하지 않을 때 유용합니다.
InterruptionToken과 InterruptionTokenSource의 차이점은 무엇입니까?
- InterruptionToken은 Aspose.Slides API에 전달되어 장시간 작업 중에 확인됩니다.
- InterruptionTokenSource는 코드에서 토큰을 생성하고 interrupt를 호출하여 중단을 트리거하는 데 사용됩니다.
어떤 작업을 중단할 수 있습니까?
InterruptionToken을 허용하는 모든 Aspose.Slides 작업—예를 들어 Presentation으로 프레젠테이션을 로드하거나 Presentation.save으로 저장하는 경우—는 중단할 수 있습니다.
중단이 즉시 발생합니까?
아니요. 중단은 협력형입니다: 작업이 주기적으로 토큰을 확인하고 interrupt가 호출된 것을 감지하면 바로 중단됩니다.
작업이 이미 완료된 후에 interrupt를 호출하면 어떻게 됩니까?
아무 일도 일어나지 않습니다—해당 작업이 이미 완료된 경우 호출은 영향을 주지 않습니다.
여러 작업에 동일한 InterruptionTokenSource를 재사용할 수 있습니까?
예—but 해당 소스에서 interrupt를 호출하면 해당 토큰을 사용하는 모든 작업이 중단됩니다. 작업을 독립적으로 관리하려면 별도의 토큰 소스를 사용하십시오.