Asynchronous Programming یک نوع برنامهنویسی است که به کمک آن چند تسک را به صورت همزمان (نه موازی) در یک thread انجام میدهیم. این نوع برنامهنویسی برای پردازش تسکهای CPU Bound اصلا توصیه نمیشود و برای انجام تسکهای IO Bound بسیار عالی است.
مثال – امور روزمره
فرض کنید از یک فروشگاه اینترنتی یک کالا میخرید. سپس یک بسته با پست برای دوستتان در شهری دیگر ارسال میکنید. سپس لباسهایی که شسته اید را در آفتاب پهن میکنید تا خشک شوند.
گاهی وضعیت خرید خود را در سایت فروشگاه اینترنتی چک میکنید. گاهی وضعیت بستهای که ارسال کرده اید را چک میکنید و گاهی به لباسها سر میزنید تا مطمئن شوید که خشک شدهاند یا نه.
در این، اگر این ۳ کار را تسکهای سیستم در نظر بگیریم، شما مانند یک event loop عمل میکنید که در یک thread در حال اجراست از پایان یافتن تسکها مطمئن شود.
اگر دقت کرده باشید، همه این کارها برای از نظر پردازشی کارهاس سختی نیستند، بلکه زمان زیادی برای انجام شدن نیاز دارند.
آیا امکان دارد شما یک صندلی بگذارید و جلوی لباسها به انتظار بنشینید تا خشک شوند؟ انجام دادن تسکهای IO Bound با multiprocessing به همین اندازه احمقانه است.