آموزش ماژول asyncio – مروری بر Futures

Please login to bookmark Close

در برنامه‌نویسی با استفاده از کتابخانه asyncio در پایتون، Future یک شیء است که نشان‌دهنده یک مقدار یا یک استثنا است که در آینده قابل دسترسی خواهد بود. Future ها معمولاً توسط کوروتین‌ها یا توابعی که با async تعریف شده‌اند و با await فراخوانی می‌شوند، استفاده می‌شوند.

ایجاد و استفاده از یک Future

مقادیری که در آینده قرار است محاسبه شوند را در آن نگه می‌داریم. یا مقدار دارد یا ندارد. در صورتی که نداشته باشد به عنوان انجام نشده و اگر مقدار داشته باشد به عنوان انجام شده در نظر گرفته می‌شود.

به تکه کد زیر توجه کنید.

import asyncio

# ایجاد یک شیء Future
f = asyncio.Future()

# تنظیم نتیجه Future
f.set_result(1)

# دسترسی به نتیجه
print(f, f.result())

در کد بالا:

  • یک Future ایجاد شده و سپس نتیجه آن با set_result تنظیم شده است.
  • پس از تنظیم نتیجه، می‌توان با استفاده از result() به آن دسترسی پیدا کرد.

خروجی این کد شبیه به زیر است

DeprecationWarning: There is no current event loop
  f = asyncio.Future()
<Future pending>

دلیل این warning این هست که ما این future را در هیچ event loop ای نساخته ایم. هر future باید در یک event loop ساخته شود. با کمی تغییر در کد بالا می‌توان این مشکل را حل کرد.

import asyncio

async def main():
    f = asyncio.Future()
    f.set_result(1)
    print(f, f.result())

asyncio.run(main())

Please login to bookmark Close
نظرات

دیدگاهتان را بنویسید

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم