تقنية

sched في بايثون: هل تتقدم الأولوية على الموعد؟

bud بموعد أسبق يتقدم على leaf
الموعد قبل الأولوية. [1] [2]

رتّب أحداثًا مستحقة. [1] [2]

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

لا؛ الموعد أولًا، ثم الأولوية عند تساويه. [1] [2]

  • ساعة المثال ثابتة عند 2؛ الأحداث مستحقة. [1] [2]
  • bud عند 1 يسبق leaf عند 2، رغم الأولوية. [1] [2]
  • عند 1، root بأولوية 1 يسبق bud بأولوية 9. [1] [2]
  • الناتج root ثم bud ثم leaf. [1] [2]
  • اختبرنا 3.12.14 دون انتظار أو خيط خلفي. [1] [2]

المثال

import sched
seen=[]
s=sched.scheduler(
 lambda:2,lambda n:None)
s.enterabs(1,9,seen.append,("bud",))
s.enterabs(2,0,seen.append,("leaf",))
s.enterabs(1,1,seen.append,("root",))
s.run(blocking=False)
print(seen)

[1] [2]

ترتيب المقارنة

المصدر يخزن الزمن قبل الأولوية. عند الموعد نفسه يتقدم الرقم الأقل؛ الأولوية لا تتجاوز الزمن. [1] [2]

root بأولوية رقمية أقل يتقدم على bud عند الموعد نفسه
الرقم الأقل أولًا. [1] [2]

حدود التجربة

المخرج ['root', 'bud', 'leaf']. أضفنا root أخيرًا، لكنه أول المنفذين. ساعة مؤلفة ودالة انتظار بلا تأخير تعزلان الترتيب؛ لا نقيس دقة التنفيذ بالوقت الحقيقي أو التزامن. [1] [2]

المراجع

  1. Python 3.12: scheduler.enterabs
  2. CPython 3.12.14: event ordering
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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