تقنية

graphlib في بايثون: استلام العقدة لا يعني إنجازها

الاستلام الأول يعيد a والثاني فارغ
العقدة b تنتظر a. [1] [2]

افصل الاستلام عن الإنجاز. [1] [2]

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

get_ready() لا ينجز العقدة؛ نبلغ بالمعالجة عبر done. [1] [2]

  • في المثال تعتمد b على a. [1] [2]
  • بعد prepare يعيد الاستلام الأول a. [1] [2]
  • الاستلام الثاني فارغ؛ لا يحرر b تلقائيًا. [1] [2]
  • بعد done('a') يظهر b في الاستلام التالي. [1] [2]
  • اختبرنا 3.12.14؛ هذه حالات ترتيب، ولم ننفذ أعمالًا أو نختبر التوازي. [1] [2]

المثال

import graphlib as g
t=g.TopologicalSorter(
 {'b':{'a'},'a':set()})
t.prepare()
print(t.get_ready())
print(t.get_ready())
t.done('a')
print(t.get_ready())

[1] [2]

المخرجات: ('a',) ثم () ثم ('b',). [1] [2]

متى يتحرر التابع؟

استلام a يميزها عن العقد التي لم تُستلم، لكنه لا يسجل إنجازها. تنتظر b الإبلاغ بمعالجة سابقتها. [1] [2]

بعد الإبلاغ عبر done يتغير الجاهز. وضعنا الإبلاغ يدويًا للتجربة، لا بوصفه دليل تنفيذ مهمة حقيقية. [1] [2]

الإبلاغ بإنجاز a يحرر b للاستلام
أسماء نصية؛ إبلاغ يدوي. [1] [2]

حدود المثال

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

المراجع

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

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