การสนับสนุนไลบรารีที่หยุดได้

ภาพรวม

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 บนแหล่งนั้น งานทั้งหมดที่ใช้โทเคนจากแหล่งนั้นจะถูกขัดขวาง ใช้แหล่งโทเคนแยกกันเพื่อจัดการงานแต่ละงานอย่างอิสระ