تقنية

Future.done في بايثون: هل تعني توفر نتيجة بعد الإلغاء؟

الإلغاء والحالة المنتهية يعطيان True في كائن الاختبار
فحص الحالة المحلية. [1] [2]

ننشئ كائنًا مؤلفًا للاختبار، دون منفذ مهام. [1] [2]

الخلاصة السريعة

لا؛ الإلغاء يجعل done() صادقة هنا دون نتيجة. [1] [2]

  • إنشاء Future مباشرة مخصص للاختبار هنا. [1] [2]
  • يعطي cancel() ثم done() قيمتي True. [1] [2]
  • يرفع result() الاستثناء CancelledError. [1] [2]
  • نلتقط الاستثناء ونطبع cancelled. [1] [2]
  • اختبرنا 3.12.14 دون تشغيل عامل. [1] [2]

المثال

import concurrent.futures as c
f=c.Future()
print(f.cancel(),f.done())
try:f.result()
except c.CancelledError:
 print('cancelled')

[1] [2]

المخرجان True True ثم cancelled. [1] [2]

الحالة والقيمة

الحالة المنتهية تشمل الإلغاء؛ لا تعني نجاح حساب. في الكائن نفسه نقرأ الحالة، ثم نواجه استثناء الإلغاء عند طلب القيمة. [1] [2]

done صادقة وطلب النتيجة يرفع CancelledError للكائن الملغى
الحالة ليست قيمة ناجحة. [1] [2]

حدود الفحص

لم نستخدم منفذًا أو نقدم مهمة. هذا اختبار للحالة، وليس إثباتًا لإيقاف عمل جارٍ أو قياس زمن انتظار. [1] [2]

المراجع

  1. Python: concurrent.futures
  2. CPython 3.12.14: futures/_base.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.