آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی
جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره های آموزشی
  • اخبار و مقالات
  • درباره ما
  • تماس با ما
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]

ارسال مجدد کد یکبار مصرف (00:90)
  • 02177010771
  • info@chabokacademy.com
  • اخبار و مقالات
  • علاقمندی ها
آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی
  • صفحه اصلی
  • دوره های آموزشی
  • اخبار و مقالات
  • درباره ما
  • تماس با ما
شروع کنید
0

وبلاگ

آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی > اخبار و مقالات > برنامه نویسی > آموزش Queue در پایتون؛ چطور با Queue در پایتون چند وظیفه را به ترتیب اجرا کنیم؟

آموزش Queue در پایتون؛ چطور با Queue در پایتون چند وظیفه را به ترتیب اجرا کنیم؟

آذر 10, 1404
ارسال شده توسط آکادمی چابک
برنامه نویسی
کاربرد Queue در پروژه پایتون

فهرست مطالب این نوشته

Toggle
  • مفهوم صف Queue در پایتون
  • Queue در پایتون چیست و چرا باید از آن استفاده کنیم؟
  • انواع صف‌ها در پایتون
  • چطور با Queue در پایتون چند وظیفه را به ترتیب و بدون تداخل اجرا کنیم؟
  • کاربرد Queue در پروژه پایتون
  • تفاوت collections.deque و queue.Queue در پایتون چیست؟
تعداد بازدید: 22
لطفا به این مقاله امتیاز بدهید.

ساختار داده‌ای Queue یا «صف» اساس سیستم‌هایی مثل مدیریت تسک‌ها در سیستم‌عامل‌ها، پردازش درخواست‌های سرور و الگوریتم‌های جستجو است. اگر تازه وارد دنیای برنامه‌نویسی هستید و می‌خواهید خیلی ساده و کاربردی با این مفهوم آشنا شوید، همراه ما باشید. اگر تازه وارد دنیای برنامه‌نویسی هستید و می‌خواهید خیلی ساده و کاربردی با ساختار داده‌ای Queue آشنا شوید، این مطلب در قالب آموزش اسکرچ جونیور از آکادمی چابک برای شما آماده شده است.

اگر می‌خواهید فرزندتان با بازی و خلاقیت، برنامه‌نویسی را یاد بگیرد؛ دوره اسکرچ جونیور را از دست ندهید!
تخفیف‌های شگفت‌انگیز جشنواره آکادمی چابک
تخفیف بگیر و ثبت نام کن!

مفهوم صف Queue در پایتون

صف (Queue) یک ساختار داده‌ای خطی است که بر اساس قانون «اول وارد، اول خارج» (FIFO) عمل می‌کند. یعنی عنصری که ابتدا وارد صف می‌شود، زودتر از بقیه هم خارج خواهد شد.

ویژگی‌های اصلی صف‌ها:

  • افزودن عنصر (Enqueue): اضافه کردن داده به انتهای صف.
  • حذف عنصر (Dequeue): حذف اولین داده از ابتدای صف.
  • مشاهده عنصر اول (Peek): دیدن عنصر جلویی بدون حذف.
  • بررسی خالی بودن صف (IsEmpty): چک کردن وضعیت صف.

این ساختار در پایتون به‌شکل‌های مختلف قابل پیاده‌سازی است که در ادامه همه را بررسی می‌کنیم.

فرصت یادگیری پایتون را از دست ندهید! با ثبت‌نام در این دوره، به دنیای برنامه‌نویسی وارد شوید و پروژه‌های جذاب و کاربردی بسازید! تخفیف‌های شگفت‌انگیز جشنواره آکادمی چابک
همین حالا ثبت‌نام کنید!

Queue در پایتون چیست و چرا باید از آن استفاده کنیم؟

در پایتون صف‌ها به‌صورت‌های مختلف قابل پیاده‌سازی هستند: از ساده‌ترین روش با list گرفته تا روش‌های بهینه‌تر مثل collections.deque و queue.Queue. برای اینکه بتوانید بهترین گزینه را انتخاب کنید، باید ابتدا شرایط پروژه‌تان را بسنجید. برای مثال آیا برنامه چندنخی است؟ آیا حجم داده زیاد است؟

در ادامه یک مثال Queue در پایتون برایتان بررسی کرده‌ایم تا این مفهوم را بهتر درک کنید و ببینید چگونه می‌توان وظایف را به ترتیب و بدون تداخل مدیریت کرد.

فرض کنید یک وب‌سایت فروشگاهی دارید و می‌خواهید درخواست‌های خرید کاربران را به ترتیب دریافت و پردازش کنید. با استفاده از deque می‌توانید به راحتی این کار را انجام دهید:

آموزش اصول بهینه‌سازی صفحات AMP برای موبایل
بخوانید

from collections import deque

# ایجاد صف برای درخواست‌ها

order_queue = deque()

# اضافه کردن درخواست‌ها به صف

order_queue.append(“Order #1”)

order_queue.append(“Order #2”)

order_queue.append(“Order #3”)

# پردازش درخواست‌ها به ترتیب

while order_queue:

current_order = order_queue.popleft()

print(f”Processing {current_order}”)

Queue در پایتون چیست

انواع صف‌ها در پایتون

قبل از اینکه نحوه‌ی پیاده‌سازی صف‌ها را ببینیم، بد نیست با انواع آن‌ها آشنا شویم تا بدانید هرکدام دقیقاً برای چه سناریویی طراحی شده‌اند. جدول زیر خلاصه‌ای از رایج‌ترین نوع صف‌ها در پایتون است:

نوع صف ویژگی ماژول پیشنهادی
صف ساده (FIFO) معمول‌ترین نوع، بر اساس ورود و خروج deque یا queue.Queue
صف دوطرفه (Deque) اضافه و حذف از هر دو طرف collections.deque
صف اولویت (Priority Queue) پردازش بر اساس اولویت queue.PriorityQueue یا heapq
پشته (Stack – LIFO) آخرین ورودی، اولین خروجی list یا deque

چطور با Queue در پایتون چند وظیفه را به ترتیب و بدون تداخل اجرا کنیم؟

برای پیاده سازی صف Queue در پایتون، می‌توانید یکی از سه روش زیر را انتخاب کنید:

۱. استفاده از لیست ساده

اگر تازه می‌خواهید مفهوم صف را درک کنید، پیاده‌سازی با list بهترین نقطه‌ی شروع است.

class ListQueue:

def __init__(self):

self.queue = []

def enqueue(self, item):

self.queue.append(item)

def dequeue(self):

if not self.queue:

raise IndexError(“Queue is empty”)

return self.queue.pop(0)

عیب این روش در سرعت است، چون عملیات pop(0) باعث جابه‌جایی تمام عناصر دیگر می‌شود.

chabokacademy
دوره‌های آموزشی آکادمی چابک
با تخفیف‌های ویژه آکادمی چابک، یادگیری را شروع کنید!
مشاهده دوره‌ها

۲. روش Deque؛ از Deque چگونه می‌شود استفاده کرد؟

در بیشتر برنامه‌ها، بهترین انتخاب برای صف‌های ساده، استفاده از collections.deque است.

from collections import deque

q = deque()

q.append(‘task1’)

q.append(‘task2’)

print(q.popleft()) # خروجی: task1

۳. روش queue.Queue؛ چطور یک صف thread-safe با queue.Queue در پایتون بسازیم؟

وقتی با چند Thread کار می‌کنید (مثلاً در سیستم‌هایی که چند کار را هم‌زمان انجام می‌دهند)، نیاز به صفی دارید که دسترسی هم‌زمان باعث خرابی داده نشود. در این موقعیت از کلاس queue.Queue استفاده کنید.

from queue import Queue

q = Queue()

q.put(“Job 1”)

q.put(“Job 2”)

print(q.get()) # خروجی: Job 1

این ساختار Thread-safe است و برای کارهای هم‌زمان عالی عمل می‌کند. این ساختار Thread-safe است و برای کارهای هم‌زمان عالی عمل می‌کند، و در دوره‌های آموزش شبکه عصبی در پایتون نیز می‌توان از مفاهیم مشابه برای مدیریت داده‌ها استفاده کرد

آموزش queue در پایتون

کاربرد Queue در پروژه پایتون

Queue کاربردهای مختلفی در پروژه‌های پایتون دارد که در این بخش چند مورد آن‌ها را مرور می‌کنیم:

  • مدیریت تسک‌ها در سیستم‌های چندوظیفه‌ای
  • پردازش درخواست‌های وب‌سرور
  • پیاده‌سازی الگوریتم جستجوی عرضی (BFS)
  • مدیریت پیام‌ها در سیستم‌های توزیع‌شده
  • صف انتظار در اپلیکیشن‌های بلادرنگ مثل چت آنلاین
متغیرها در جاوا اسکریپت: تفاوت متغیرهای const و var و let در جاوا اسکریپت
بخوانید

برای ساخت صفی ایمن در محیط‌های چندنخی، فقط کافی است از ماژول داخلی queue استفاده کنید. این صف به‌صورت خودکار بین Threadها هماهنگی ایجاد می‌کند و از قفل (Lock) داخلی برای جلوگیری از تداخل استفاده می‌کند. برای ساخت صف ایمن در چندنخی، از ماژول queue استفاده کنید؛ این روش در آموزش برنامه نویسی پایتون با گوشی هم کاربرد دارد

تفاوت collections.deque و queue.Queue در پایتون چیست؟

در آخر، نگاهی می‌اندازیم به تفاوت‌های دو مورد از پرکاربردترین روش‌های پیاده‌سازی صف در پایتون تا راحت‌تر بتوانید انتخاب کنید:

ویژگی deque queue.Queue
سرعت بسیار بالا در اجرای تکی کمی کندتر به‌خاطر مدیریت قفل‌ها
پشتیبانی از چندنخی ندارد دارد (Thread-safe)
استفاده معمول الگوریتم‌ها، ساختارهای داده ساده برنامه‌های هم‌زمان و چندتردی
ماژول collections queue

جمع‌بندی

حالا که می‌توانید از Queue در پایتون استفاده کنید، بهتر است یک پروژه‌ی کوچک مثل مدیریت تسک‌های روزانه بسازید و با دستورات enqueue() و dequeue() یک صف ساده را پیاده‌سازی کنید تا ببینید چقدر مفهوم را دقیق درک کرده‌اید.

اگر می‌خواهید عمیق‌تر وارد دنیای پایتون شوید و مهارت‌های خود را حرفه‌ای‌تر کنید، دوره‌های آموزشی آکادمی چابک در سطوح مقدماتی، متوسط و پیشرفته، شما را در مسیر تبدیل شدن به یک متخصص واقعی همراهی می‌کنند.

برای مشاهده‌ی سرفصل‌ها و اطلاع از تخفیف‌های دوره‌ها، به صفحه‌ی محصولات ما سر بزنید.

منبع:

stackify.com

قبلی آموزش exe گرفتن از پایتون به زبان ساده، چطور فایل پایتون رو به برنامه ویندوز تبدیل کنیم؟
بعدی راهنمای عملی آموزش پایتون برای فارکس و بازارهای مالی برای مبتدیان

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • آموزش گرافیک کامپیوتری
  • امنیت و شبکه
  • برنامه نویسی
  • پایگاه داده
  • سیستم عامل
  • طراحی وب
  • کسب و کار
  • هوش مصنوعی
برچسب‌ها
MBA آموزش و کاربرد هوش مصنوعی اهداف شغلی بازاریابی محصول کسب و کار اینترنتی
logoacademy
آکادمی چابک با برگزاری دوره‌های جامع و تخصصی در حوزه‌ی نرم‌افزار، تحلیل کسب‌وکار و همچنین مشاوره‌های تخصصی در این حوزه‌ها سعی بر آن دارد تا علاقمندان پس از گذراندن دوره‌های مربوطه بتوانند از دانش و مهارت‌ خود بهترین استفاده را کرده و وارد بازار کار شوند.
 

ارتباط با ما

  • ۰۲۱۷۷۰۱۰۷۷۱
  • info@chabokacademy.com
  • حکیمیه، بلوار بابائیان، ۱۵ متری امام حسین، بن بست شفاعت، پلاک ۱۵، طبقه ۷

دسترسی سریع

  • خانه
  • دوره ها
  • اخبار و مقالات
  • تماس با ما
  • خانه
  • دوره ها
  • اخبار و مقالات
  • تماس با ما

نماد‌ها و خبرنامه

۱۴۰۲© کلیه حقوق سایت نزد آکادمی چابک محفوظ است.

ورود
با شماره موبایل
آیا هنوز عضو نشده اید؟ اکنون ثبت نام کنید
ثبت نام
قبلا عضو شده اید؟ اکنون وارد شوید
محافظت شده توسط