Hàng đợi đa xử lý của Python

Hang Doi Da Xu Ly Cua Python



Yếu tố quan trọng nhất của cấu trúc dữ liệu là hàng đợi. Hàng đợi cấu trúc dữ liệu “vào trước, ra trước” là cơ sở cho đa xử lý Python có thể so sánh được. Hàng đợi được cung cấp cho chức năng quy trình để cho phép quy trình thu thập dữ liệu. Mục dữ liệu đầu tiên bị loại khỏi hàng đợi là mục đầu tiên được nhập. Chúng tôi sử dụng phương thức “put()” của hàng đợi để thêm dữ liệu vào hàng đợi và phương thức “get()” của nó để truy xuất dữ liệu từ hàng đợi.

Ví dụ 1: Sử dụng Phương thức Queue() để tạo Hàng đợi đa xử lý trong Python

Trong ví dụ này, chúng tôi tạo một hàng đợi đa xử lý trong Python bằng phương thức “queue()”. Đa xử lý đề cập đến việc sử dụng một hoặc nhiều CPU trong một hệ thống để thực hiện đồng thời hai hoặc nhiều quy trình. Đa xử lý, một mô-đun được xây dựng trong Python, tạo điều kiện chuyển đổi giữa các quy trình. Chúng ta phải làm quen với thuộc tính process trước khi làm việc với multiprocessing. Chúng tôi biết rằng hàng đợi là một thành phần quan trọng của mô hình dữ liệu. Hàng đợi dữ liệu tiêu chuẩn, được xây dựng dựa trên ý tưởng “Nhập trước xuất trước” và đa xử lý Python là các đối tác chính xác. Nói chung, hàng đợi lưu trữ đối tượng Python và rất quan trọng để truyền dữ liệu giữa các tác vụ.







Công cụ 'gián điệp' được sử dụng để triển khai tập lệnh Python có sẵn, vì vậy, hãy bắt đầu đơn giản. Trước tiên, chúng tôi phải nhập mô-đun đa xử lý vì chúng tôi đang chạy tập lệnh đa xử lý Python. Chúng tôi đã làm điều này bằng cách nhập mô-đun đa xử lý dưới dạng “m”. Sử dụng kỹ thuật “m.queue()”, chúng tôi gọi phương thức “queue()” đa xử lý. Ở đây, chúng ta tạo một biến có tên là “queue” và đặt phương thức đa xử lý “queue()” vào đó. Như chúng ta biết rằng hàng đợi lưu trữ các mục theo thứ tự “nhập trước, xuất trước”, mục nào chúng ta thêm vào trước sẽ bị xóa trước. Sau khi khởi chạy hàng đợi đa xử lý, chúng ta sẽ gọi phương thức “print()”, chuyển câu lệnh “Có một hàng đợi đa xử lý” làm đối số của nó để hiển thị nó trên màn hình. Sau đó, vì chúng tôi lưu trữ hàng đợi đã tạo trong biến này, nên chúng tôi in hàng đợi bằng cách chuyển biến “queue” trong dấu ngoặc đơn của phương thức “print()”.




Hình ảnh sau đây cho thấy hàng đợi đa xử lý của Python hiện đã được tạo. Câu lệnh in được hiển thị đầu tiên. Sau khi hàng đợi đa xử lý này được tạo trong địa chỉ bộ nhớ được chỉ định, nó có thể được sử dụng để truyền dữ liệu riêng biệt giữa hai hoặc nhiều quy trình đang chạy.







Ví dụ 2: Sử dụng Phương pháp “Qsize()” để xác định kích thước của hàng đợi đa xử lý trong Python

Chúng tôi xác định kích thước của hàng đợi đa xử lý trong trường hợp này. Để tính toán kích thước của hàng đợi đa xử lý, chúng tôi sử dụng phương thức “qsize()”. Hàm “qsize()” trả về kích thước thực của hàng đợi đa xử lý trong Python. Nói cách khác, phương pháp này cung cấp tổng số mục trong hàng đợi.

Hãy bắt đầu bằng cách nhập mô-đun đa xử lý Python dưới dạng “m” trước khi chạy mã. Sau đó, bằng cách sử dụng lệnh “m.queue()”, chúng tôi gọi hàm “queue()” đa xử lý và đặt kết quả vào biến “Queue”. Sau đó, sử dụng phương thức “put()”, chúng ta thêm các mục vào hàng đợi ở dòng sau. Phương pháp này được sử dụng để thêm dữ liệu vào hàng đợi. Do đó, chúng tôi gọi “Queue” bằng phương thức “put()” và cung cấp các số nguyên làm phần tử trong ngoặc đơn của nó. Các số mà chúng ta cộng là “1”, “2”, “3”, “4”, “5”, “6” và “7” bằng cách sử dụng các hàm “put()”.



Ngoài ra, bằng cách sử dụng “Queue” để lấy kích thước của hàng đợi đa xử lý, chúng tôi gọi “qsize()” với hàng đợi đa xử lý. Sau đó, trong biến 'kết quả' mới được tạo, chúng tôi lưu kết quả của phương thức 'qsize()'. Sau đó, chúng tôi gọi phương thức “print()” và chuyển câu lệnh “Kích thước của hàng đợi đa xử lý là” làm tham số của nó. Tiếp theo, chúng tôi gọi biến “kết quả” trong hàm “print()” vì kích thước được lưu trong biến này.


Hình ảnh đầu ra có kích thước được hiển thị. Khi chúng ta sử dụng hàm “put()” để thêm bảy phần tử vào hàng đợi đa xử lý và hàm “qsize()” để xác định kích thước, thì kích thước “7” của hàng đợi đa xử lý sẽ được hiển thị. Câu lệnh đầu vào 'kích thước của hàng đợi đa xử lý' được hiển thị trước kích thước.

Ví dụ 3: Sử dụng Phương thức “Put()” và “Get()” trong Hàng đợi đa xử lý của Python

Các phương thức xếp hàng “put()” và “get()” từ hàng đợi đa xử lý của Python được sử dụng trong ví dụ này. Chúng tôi phát triển hai hàm do người dùng định nghĩa trong ví dụ này. Trong ví dụ này, chúng tôi định nghĩa một hàm để tạo một quy trình tạo ra các số nguyên ngẫu nhiên “5”. Chúng tôi cũng sử dụng phương thức “put()” để thêm chúng vào hàng đợi. Phương thức “put()” được dùng để đặt các mục vào hàng đợi. Sau đó, để lấy các số từ hàng đợi và trả về giá trị của chúng, chúng ta viết một hàm khác và gọi nó trong suốt quá trình. Chúng tôi sử dụng hàm “get()” để truy xuất các số từ hàng đợi vì phương thức này được sử dụng để truy xuất dữ liệu từ hàng đợi mà chúng tôi chèn bằng phương thức “put()”.

Hãy bắt đầu triển khai mã ngay bây giờ. Đầu tiên, chúng tôi nhập bốn thư viện tạo nên tập lệnh này. Trước tiên, chúng tôi nhập 'ngủ' từ mô-đun thời gian để trì hoãn thực thi trong một khoảng thời gian được tính bằng giây, tiếp theo là 'ngẫu nhiên' từ mô-đun ngẫu nhiên được sử dụng để tạo số ngẫu nhiên, sau đó là 'xử lý' từ đa xử lý vì mã này tạo ra một quy trình và cuối cùng là 'hàng đợi' từ đa xử lý. Bằng cách xây dựng một thể hiện lớp ban đầu, hàng đợi có thể được sử dụng. Theo mặc định, điều này thiết lập hàng đợi vô hạn hoặc hàng đợi không có kích thước tối đa. Bằng cách đặt tùy chọn kích thước tối đa thành một số lớn hơn 0, bạn có thể tạo một tác phẩm có giới hạn kích thước.


Chúng tôi xác định một chức năng. Sau đó, vì hàm này do người dùng định nghĩa nên chúng tôi đặt cho nó tên là “function1” và chuyển thuật ngữ “queue” làm đối số của nó. Sau đó, chúng tôi gọi hàm “print()”, chuyển cho hàm này các câu lệnh “builder: Running”, “flush” và đối tượng “True” . Chức năng in của Python có một tùy chọn duy nhất được gọi là flush cho phép người dùng chọn có đệm đầu ra này hay không. Bước tiếp theo là tạo nhiệm vụ. Để làm điều này, chúng tôi sử dụng “for” và tạo biến “m” và đặt phạm vi thành “5”. Sau đó, ở dòng tiếp theo, hãy sử dụng “ngẫu nhiên()” và lưu kết quả vào biến mà chúng ta đã tạo là “giá trị”. Điều này chỉ ra rằng hàm hiện kết thúc năm lần lặp, với mỗi lần lặp tạo một số nguyên ngẫu nhiên từ 0 đến 5.

Sau đó, trong bước tiếp theo, chúng ta gọi hàm “sleep()” và chuyển đối số “giá trị” để trì hoãn phần đó trong một số giây nhất định. Sau đó, chúng tôi gọi 'hàng đợi' bằng phương thức 'put()' về cơ bản là thêm giá trị vào hàng đợi. Sau đó, người dùng được thông báo rằng không cần thực hiện thêm công việc nào nữa bằng cách gọi phương thức “queue.put()” một lần nữa và chuyển giá trị “None”. Sau đó, chúng ta chạy phương thức “print()”, chuyển câu lệnh “builder: ready” cùng với “flush” và đặt nó thành “True”.


Bây giờ chúng ta định nghĩa hàm thứ hai, “function2” và gán từ khóa “queue” làm đối số cho hàm đó. Sau đó, chúng tôi gọi hàm “print()” trong khi chuyển trạng thái báo cáo “Người dùng: Đang chạy” và “xóa” được đặt thành “True”. Chúng tôi bắt đầu hoạt động của “function2” bằng cách sử dụng điều kiện true để lấy dữ liệu ra khỏi hàng đợi và đặt nó vào biến “item” mới được tạo. Sau đó, chúng tôi sử dụng điều kiện “nếu”, “mục là Không”, để ngắt vòng lặp nếu điều kiện là đúng. Nếu không có mục nào, nó sẽ dừng lại và hỏi người dùng một mục. Tác vụ dừng vòng lặp và kết thúc trong trường hợp này nếu mục thu được từ giá trị là null. Sau đó, trong bước tiếp theo, chúng ta gọi hàm “print()” và cung cấp báo cáo “User: ready” và các tham số “flush=True” cho nó.


Sau đó, chúng tôi nhập quy trình chính bằng cách sử dụng “If-name = main_”. Chúng ta tạo một hàng đợi bằng cách gọi phương thức “queue()” và lưu trữ nó trong biến “queue”. Tiếp theo, chúng ta tạo một quy trình bằng cách gọi hàm người dùng là “function2”. Đối với điều này, chúng tôi gọi lớp 'tiến trình'. Bên trong nó, chúng ta truyền “target=function2” để gọi hàm trong tiến trình, truyền đối số “queue” và lưu trữ nó trong biến “User_process”. Sau đó, quy trình bắt đầu bằng cách gọi phương thức “start()” với biến “User_ tiến trình”. Sau đó, chúng tôi lặp lại quy trình tương tự để gọi “function1” trong quy trình và đặt nó vào biến “quy trình xây dựng”. Sau đó, chúng tôi gọi các quy trình bằng phương thức “join()” để chờ thực thi.


Bây giờ nó đã được trình bày, bạn có thể thấy câu lệnh của cả hai hàm ở đầu ra. Nó hiển thị các mục mà chúng tôi đã thêm bằng cách sử dụng “put()” và “get()” bằng cách sử dụng các phương thức “get()” tương ứng.

Sự kết luận

Chúng ta đã tìm hiểu về hàng đợi đa xử lý của Python trong bài viết này. Chúng tôi đã sử dụng các hình minh họa đã cho. Lúc đầu, chúng tôi đã mô tả cách tạo hàng đợi trong đa xử lý Python bằng cách sử dụng hàm queue(). Sau đó, chúng tôi đã sử dụng phương thức “qsize()” để xác định . Chúng tôi cũng đã sử dụng các phương thức put() và get() của hàng đợi. Lớp ngủ của mô-đun thời gian và lớp ngẫu nhiên của mô-đun ngẫu nhiên đều được thảo luận trong ví dụ trước.