تقنية

Event في بايثون: هل wait يستهلك الإشارة؟

بعد set يعطي الانتظار الأول والثاني True
لا مسح بين الانتظارين. [1] [2]

الانتظار الناجح لا يمسح العلم. [1] [2]

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

بعد set() ينجح wait(0) مرتين، دون إشارة جديدة. [1] [2]

  • يبدأ علم Event بالقيمة False. [1] [2]
  • يجعله set() بالقيمة True. [1] [2]
  • نطبع True لانتظارين متتاليين. [1] [2]
  • بعد clear() نطبع False لانتظار صفري. [1] [2]
  • اختبرنا 3.12.14 في خيط واحد. [1] [2]

المثال

from threading import Event
e=Event()
e.set()
print(e.wait(0),e.wait(0))
e.clear()
print(e.wait(0))

[1] [2]

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

حالة مستمرة

تقرأ wait العلم وتعيد نتيجة الانتظار؛ لا تنفذ clear. لذلك لم يحتج الانتظار الثاني إلى set أخرى هنا. [1] [2]

بعد المسح يعود العلم إلى False؛ المهلة الصفرية تمنع انتظار إشارة لاحقة في المثال. [1] [2]

الانتظار الصفري يعطي False أولًا وبعد clear
علم غير مرفوع. [1] [2]

حد التجربة

هذا تتبع متسلسل دون خيوط عاملة. لا نستنتج ترتيب إيقاظها أو نتائج سباق بين المسح والانتظار. [1] [2]

المراجع

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

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