Supporto per una libreria interrompibile
Panoramica
Aspose.Slides fornisce un meccanismo di elaborazione interrompibile per attività di presentazione a lungo termine, come deserializzazione, serializzazione e rendering. Questo meccanismo si basa sulle classi InterruptionToken e InterruptionTokenSource.
Un InterruptionToken può essere assegnato a LoadOptions e passato al costruttore di Presentation. Quando viene chiamato InterruptionTokenSource.interrupt, l’attività a lungo termine associata viene interrotta.
Libreria Interrompibile
Aspose.Slides per Python tramite Java fornisce le classi InterruptionToken e InterruptionTokenSource. Consentono di interrompere attività a lungo termine come deserializzazione, serializzazione e rendering.
- InterruptionTokenSource è la sorgente del token(i) passato a LoadOptions.setInterruptionToken.
- Quando LoadOptions.setInterruptionToken viene chiamato e l’istanza di LoadOptions è passata al costruttore di Presentation, l’invocazione di InterruptionTokenSource.interrupt interrompe qualsiasi attività a lungo termine associata a quella Presentation.
Il seguente frammento di codice dimostra come interrompere un’attività in esecuzione:
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) # Esegui l'azione in un thread separato.
time.sleep(10) # Tempo scaduto.
token_source.interrupt() # Interrompi la conversione.
conversion_task.result()
FAQ
Qual è lo scopo della libreria di interruzione di Aspose.Slides?
Fornisce un meccanismo per interrompere operazioni a lungo termine — come il caricamento, il salvataggio o il rendering di presentazioni — prima che vengano completate. È utile quando il tempo di elaborazione deve essere limitato o l’attività non è più necessaria.
Qual è la differenza tra InterruptionToken e InterruptionTokenSource?
- InterruptionToken viene passato all’API di Aspose.Slides e controllato durante le operazioni a lungo termine.
- InterruptionTokenSource viene utilizzato nel tuo codice per creare token e attivare interruzioni chiamando interrupt.
Quali attività possono essere interrotte?
Qualsiasi attività di Aspose.Slides che accetta un InterruptionToken — ad esempio il caricamento di una presentazione con Presentation o il salvataggio con Presentation.save — può essere interrotta.
L’interruzione avviene immediatamente?
No. L’interruzione è cooperativa: l’operazione verifica periodicamente il token e si arresta non appena rileva che interrupt è stato chiamato.
Cosa succede se chiamo interrupt dopo che un’attività è già terminata?
Niente — la chiamata non ha effetto se l’attività corrispondente è già completata.
Posso riutilizzare lo stesso InterruptionTokenSource per più attività?
Sì — ma dopo aver chiamato interrupt su quella sorgente, tutte le attività che usano i suoi token verranno interrotte. Utilizza sorgenti di token separate per gestire le attività in modo indipendente.