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