Hướng dẫn what does queue () do in python? - hàng đợi () làm gì trong python?
Mã nguồn: lib/queue.py Lib/queue.py Show Mô-đun Mô -đun thực hiện ba loại hàng đợi, chỉ khác nhau theo thứ tự mà các mục được truy xuất. Trong một hàng đợi FIFO, các nhiệm vụ đầu tiên được thêm vào là lần đầu tiên được truy xuất. Trong một hàng đợi Lifo, mục được thêm gần đây nhất là lần đầu tiên được truy xuất (hoạt động như một ngăn xếp). Với hàng đợi ưu tiên, các mục được giữ được sắp xếp (sử dụng mô -đun Trong nội bộ, ba loại hàng đợi sử dụng khóa để chặn các luồng cạnh tranh tạm thời; Tuy nhiên, chúng không được thiết kế để xử lý sự tái lập trong một luồng. Ngoài ra, mô -đun thực hiện một loại hàng đợi FIFO đơn giản, Mô -đun Người xây dựng cho một hàng đợi FIFO. MaxSize là một số nguyên đặt giới hạn trên đối với số lượng mục có thể được đặt trong hàng đợi. Chèn sẽ chặn khi đã đạt được kích thước này, cho đến khi các mục hàng đợi được tiêu thụ. Nếu tối đa nhỏ hơn hoặc bằng 0, kích thước hàng đợi là vô hạn. classqueue.lifoqueue (maxsize = 0) ¶ queue.LifoQueue(maxsize=0)¶Người xây dựng cho một hàng đợi LIFO. MaxSize là một số nguyên đặt giới hạn trên đối với số lượng mục có thể được đặt trong hàng đợi. Chèn sẽ chặn khi đã đạt được kích thước này, cho đến khi các mục hàng đợi được tiêu thụ. Nếu tối đa nhỏ hơn hoặc bằng 0, kích thước hàng đợi là vô hạn. classqueue.priorityqueue (MaxSize = 0) ¶queue.PriorityQueue(maxsize=0)¶Người xây dựng cho một hàng đợi ưu tiên. MaxSize là một số nguyên đặt giới hạn trên đối với số lượng mục có thể được đặt trong hàng đợi. Chèn sẽ chặn khi đã đạt được kích thước này, cho đến khi các mục hàng đợi được tiêu thụ. Nếu tối đa nhỏ hơn hoặc bằng 0, kích thước hàng đợi là vô hạn. Các mục có giá trị thấp nhất được lấy đầu tiên (mục có giá trị thấp nhất là bản được trả lại bởi Nếu các phần tử dữ liệu không thể so sánh được, dữ liệu có thể được gói trong một lớp bỏ qua mục dữ liệu và chỉ so sánh số ưu tiên: from dataclasses import dataclass, field from typing import Any @dataclass(order=True) class PrioritizedItem: priority: int item: Any=field(compare=False)classqueue.simplequeue¶ queue.SimpleQueue¶ Người xây dựng cho một hàng đợi FIFO không giới hạn. Hàng đợi đơn giản thiếu chức năng nâng cao như theo dõi nhiệm vụ. Mới trong phiên bản 3.7. Exceptionqueue.empty¶ queue.Empty¶Ngoại lệ được nâng lên khi không chặn import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')0) được gọi trên một đối tượng Queue trống. ngoại lệ.Full
queue.Full¶Ngoại lệ được nâng lên khi không chặn import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')2 (hoặc import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')3) được gọi trên một đối tượng Queue đã đầy.Hàng đợi đối tượngCác đối tượng hàng đợi ( import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')6 hoặc import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')7) cung cấp các phương thức công khai được mô tả dưới đây. Hàng đợi.qsize () ¶qsize()¶ Trả lại kích thước gần đúng của hàng đợi. Lưu ý, qsize ()> 0 không đảm bảo rằng một get () tiếp theo sẽ không chặn, cũng không phải Qsize () Trả lại Trả lại import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')8 Nếu hàng đợi đầy, import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')9 khác. Nếu Full () trả về import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')8, nó không đảm bảo rằng một cuộc gọi tiếp theo để nhận () sẽ không chặn. Tương tự, nếu Full () trả về import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')9, nó không đảm bảo rằng một cuộc gọi tiếp theo để đặt () sẽ không chặn. Hàng đợi.put (item, block = true, thời gian chờ = none) ¶put(item, block=True, timeout=None)¶ Đặt mục vào hàng đợi. Nếu khối args tùy chọn là đúng và thời gian chờ là Tương đương với Hủy bỏ và trả lại một mục từ hàng đợi. Nếu khối args tùy chọn là đúng và thời gian chờ là Trước 3.0 trên các hệ thống POSIX và đối với tất cả các phiên bản trên Windows, nếu khối là đúng và thời gian chờ là Tương đương với Hai phương pháp được cung cấp để hỗ trợ theo dõi xem các tác vụ Enqueued có được xử lý đầy đủ bởi các chủ đề tiêu dùng daemon hay không. Hàng đợi.task_done () ¶task_done()¶Chỉ ra rằng một nhiệm vụ trước đây là hoàn thành. Được sử dụng bởi các chủ đề tiêu dùng hàng đợi. Đối với mỗi Nếu import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')2 vào hàng đợi). Tăng Các khối cho đến khi tất cả các mục trong hàng đợi đã được xử lý và xử lý. Số lượng các nhiệm vụ chưa hoàn thành tăng lên bất cứ khi nào một mặt hàng được thêm vào hàng đợi. Số lượng đi xuống bất cứ khi nào một luồng người tiêu dùng gọi Ví dụ về cách chờ hoàn thành các nhiệm vụ enqueued: import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed') Đơn giản đối tượng
Trả lại kích thước gần đúng của hàng đợi. Lưu ý, qsize ()> 0 không đảm bảo rằng một get () tiếp theo sẽ không chặn. Đơn giản.Empty () ¶empty()¶Trả lại import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')8 Nếu hàng đợi trống, import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')9 khác. Nếu trống () trả về import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')9, nó không đảm bảo rằng một cuộc gọi tiếp theo để nhận () sẽ không chặn. Đơn giảnput(item, block=True, timeout=None)¶ Đặt mục vào hàng đợi. Phương pháp không bao giờ chặn và luôn luôn thành công (ngoại trừ các lỗi cấp thấp tiềm năng như không phân bổ bộ nhớ). Khối ARGS tùy chọn và thời gian chờ bị bỏ qua và chỉ được cung cấp để tương thích với Chi tiết triển khai CPYThon: Phương pháp này có triển khai C được tái lập. Đó là, một cuộc gọi import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')2 or get() call can be interrupted by another import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() # Send thirty task requests to the worker. for item in range(30): q.put(item) # Block until all tasks are done. q.join() print('All work completed')2 call in the same thread without deadlocking or corrupting internal state inside the queue. This makes it appropriate for use in destructors such as SimpleQueue 2 methods or
SimpleQueue 3 callbacks.
Đơn giản.put_nowait (mục) ¶put_nowait(item)¶Tương đương với Hủy bỏ và trả lại một mục từ hàng đợi. Nếu khối args tùy chọn là đúng và thời gian chờ là Tương đương với Xem thêm Lớpqueue 0Một lớp hàng đợi để sử dụng trong bối cảnh đa xử lý (chứ không phải đa luồng).
Hàng đợi trong Python là gì?Hàng đợi là một tập hợp các đối tượng hỗ trợ ngữ nghĩa từ đầu tiên, đầu tiên (FIFO) để chèn và xóa.Các hoạt động chèn và xóa đôi khi được gọi là enqueue và dequeue.Không giống như danh sách hoặc mảng, hàng đợi thường không cho phép truy cập ngẫu nhiên vào các đối tượng mà chúng chứa.a collection of objects that supports fast first-in, first-out (FIFO) semantics for inserts and deletes. The insert and delete operations sometimes called enqueue and dequeue. Unlike lists or arrays, queues typically don't allow for random access to the objects they contain.
Mục đích của hàng đợi là gì?Hàng đợi cung cấp các dịch vụ trong nghiên cứu khoa học máy tính, giao thông và vận hành trong đó các thực thể khác nhau như dữ liệu, đối tượng, người hoặc sự kiện được lưu trữ và giữ để xử lý sau đó.Trong các bối cảnh này, hàng đợi thực hiện chức năng của bộ đệm.provide services in computer science, transport, and operations research where various entities such as data, objects, persons, or events are stored and held to be processed later. In these contexts, the queue performs the function of a buffer.
Hàng đợi và dequeue trong Python là gì?Hàng đợi Python là một thư viện tích hợp cho phép bạn tạo một danh sách sử dụng quy tắc FIFO, đầu tiên trong Out.Python Deque đầu tiên sử dụng quy tắc ngược lại, xếp hàng LIFO hoặc cuối cùng trong lần đầu tiên.Cả hai hoạt động trên ngăn xếp và hàng đợi.Khi bạn làm việc trong Python, bạn có thể muốn tạo một hàng đợi các mục thay vì một danh sách. Python deque uses the opposite rule, LIFO queue, or last in first out. Both operate on stacks and queues. When you're working in Python, you may want to create a queue of items instead of a list . |