支援可中斷的函式庫
概觀
Aspose.Slides 提供可中斷的處理機制,用於長時間執行的簡報任務,如反序列化、序列化和渲染。此機制基於 InterruptionToken 與 InterruptionTokenSource 類別。
可將 InterruptionToken 指派給 LoadOptions 並傳遞至 Presentation 建構函式。呼叫 InterruptionTokenSource.interrupt 時,相關的長時間執行任務將被中斷。
可中斷的函式庫
Aspose.Slides for Python via Java 提供 InterruptionToken 與 InterruptionTokenSource 類別。它們允許您中斷長時間執行的任務,例如反序列化、序列化和渲染。
- InterruptionTokenSource 是傳遞給 LoadOptions.setInterruptionToken 的 token(或 token 群組)的來源。
- 當呼叫 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 會傳遞給 Aspose.Slides API,並在長時間執行的操作期間檢查。
- InterruptionTokenSource 用於您的程式碼中以建立 token,並透過呼叫 interrupt 觸發中斷。
可以中斷哪些任務?
任何接受 InterruptionToken 的 Aspose.Slides 任務——例如使用 Presentation 載入簡報或使用 Presentation.save 儲存——皆可被中斷。
中斷會立即發生嗎?
不會。中斷是合作式的:操作會定期檢查 token,並在偵測到已呼叫 interrupt 時立即停止。
如果在任務已完成後呼叫 interrupt 會發生什麼?
不會有任何作用——如果對應的任務已完成,呼叫將不會產生影響。
我可以在多個任務中重複使用相同的 InterruptionTokenSource 嗎?
可以——但在對該來源呼叫 interrupt 後,所有使用其 token 的任務都會被中斷。請使用獨立的 token 來源以獨立管理任務。