event loop

سازوکاری برای هماهنگ‌کردن اجرای کارهای async و رسیدگی به رویدادهای آماده.

توضیح

event loop کارهای آماده را اجرا می‌کند؛ وقتی کاری برای پاسخ شبکه یا پایان یک timer منتظر می‌ماند و کنترل را پس می‌دهد، کارهای دیگر فرصت اجرا پیدا می‌کنند. با آماده‌شدن نتیجه، ادامهٔ کار برای اجرا زمان‌بندی می‌شود. این سازوکار لزوماً به معنی parallelism نیست؛ اگر کاری طولانی اجرا شود و کنترل را پس ندهد، رسیدگی به کارهای دیگر عقب می‌افتد.

مثال

import asyncio

async def task(name):
    print(name, "start")
    await asyncio.sleep(1)
    print(name, "done")

async def main():
    await asyncio.gather(task("A"), task("B"))

asyncio.run(main())

چرا مهم است

در برنامه‌های async،؜ از server تا رابط کاربری، با event loop روبه‌رو می‌شوی. شناخت آن کمک می‌کند بفهمی چرا یک کار سنگین یا فراخوانی blocking می‌تواند پاسخ‌گویی برنامه را کند کند.

این کارت را هوش مصنوعی نوشته و دو بار با هوش مصنوعی بررسی شده است.

مطالبی با این مفهوم

  1. Polar Proxy

    Polar Proxy؛ استفادهٔ دوباره از connection با تطبیق دقیق و کاهش کار تکراری

    Polar Proxy برای read‌ها، مالکیت connection‌ها را در یک pool مرکزی نگه می‌دارد. تطبیق دقیق، cache محلی worker و انتخاب server با P2C،؜ بخش‌های اصلی طراحی شرح‌داده‌شده‌اند.

    یادگیری: ۵ مفهومافزوده‌شده postgr.es

  2. n8n

    انتشار نسخه 2.47.0 از n8n با بهبودهای متعدد

    نسخه 2.47.0 از n8n با رفع bug‌ها و بهبودهای متعددی منتشر شد. این به‌روزرسانی شامل تغییرات در agent‌ها و بهبودهایی در API و core است.

    یادگیری: ۳ مفهومافزوده‌شده github.com

  3. Chameleon

    معرفی chameleon-rs؛ بازنویسی Chameleon با Rust برای Python مدرن

    Michael Kennedy از chameleon-rs رونمایی کرده؛ پیاده‌سازی Chameleon با Rust که سازگاری با template‌های موجود را با async rendering،؜ پشتیبانی از free-threaded Python و قابلیت‌های تازه ترکیب می‌کند.

    یادگیری: ۴ مفهومافزوده‌شده mkennedy.codes