Hướng dẫn how does parallel processing work in python? - xử lý song song hoạt động như thế nào trong python?
Xử lý song song là một chế độ hoạt động trong đó tác vụ được thực hiện đồng thời trong nhiều bộ xử lý trong cùng một máy tính. Nó có nghĩa là để giảm thời gian xử lý tổng thể. Trong hướng dẫn này, bạn sẽ hiểu quy trình để song song hóa bất kỳ logic điển hình nào bằng mô -đun đa xử lý Python. Show
1. Giới thiệuXử lý song song là một chế độ hoạt động trong đó tác vụ được thực hiện đồng thời trong nhiều bộ xử lý trong cùng một máy tính. Nó có nghĩa là để giảm thời gian xử lý tổng thể. Tuy nhiên, thường có một chút chi phí khi giao tiếp giữa các quá trình thực sự có thể tăng thời gian tổng thể được thực hiện cho các nhiệm vụ nhỏ thay vì giảm nó. Trong Python, mô -đun 8 được sử dụng để chạy các quy trình song song độc lập bằng cách sử dụng các quy trình con (thay vì các luồng).Nó cho phép bạn tận dụng nhiều bộ xử lý trên máy (cả Windows và UNIX), có nghĩa là, các quy trình có thể được chạy ở các vị trí bộ nhớ hoàn toàn riêng biệt. Đến cuối hướng dẫn này, bạn sẽ biết:
2. Bạn có thể chạy bao nhiêu quy trình song song tối đa?Số lượng quy trình tối đa bạn có thể chạy tại một thời điểm bị giới hạn bởi số lượng bộ xử lý trong máy tính của bạn. Nếu bạn không biết có bao nhiêu bộ xử lý có trong máy, chức năng 1 trong 8 sẽ hiển thị nó.
3. Thực thi đồng bộ và không đồng bộ là gì?Trong quá trình xử lý song song, có hai loại thực thi: đồng bộ và không đồng bộ. Một thực thi đồng bộ là một trong những quá trình được hoàn thành theo cùng một thứ tự mà nó đã được bắt đầu. Điều này đạt được bằng cách khóa chương trình chính cho đến khi các quy trình tương ứng kết thúc. Mặt khác, không đồng bộ, không liên quan đến việc khóa. Do đó, thứ tự kết quả có thể bị trộn lẫn nhưng thường được thực hiện nhanh hơn. Có 2 đối tượng chính trong 8 để thực hiện thực hiện song song một hàm: lớp 4 và lớp 5.
Hãy cùng đưa ra một vấn đề điển hình và thực hiện song song bằng cách sử dụng các kỹ thuật trên. Trong hướng dẫn này, chúng tôi gắn bó với lớp 4, bởi vì việc sử dụng và phục vụ các ứng dụng thực tế phổ biến nhất là thuận tiện nhất.4. Tuyên bố vấn đề: Đếm số lượng số tồn tại giữa một phạm vi nhất định trong mỗi hàngVấn đề đầu tiên là: Cho ma trận 2D (hoặc danh sách danh sách), hãy đếm số lượng có mặt giữa một phạm vi nhất định trong mỗi hàng. Chúng tôi sẽ làm việc trong danh sách được chuẩn bị dưới đây.
Giải pháp mà không song songHãy cùng xem mất bao lâu để tính toán nó mà không cần song song. Đối với điều này, chúng tôi lặp lại hàm 5 (được viết bên dưới) để kiểm tra xem có bao nhiêu số nằm trong phạm vi và trả về số lượng.Nhận khóa học Python hoàn thành miễn phíĐối mặt với tình huống tương tự như mọi người khác? Xây dựng sự nghiệp khoa học dữ liệu của bạn với trình độ được công nhận trên toàn cầu, được công nghiệp phê duyệt. Có được suy nghĩ, sự tự tin và các kỹ năng làm cho nhà khoa học dữ liệu trở nên có giá trị. Nhận khóa học Python hoàn thành miễn phíXây dựng sự nghiệp khoa học dữ liệu của bạn với trình độ được công nhận trên toàn cầu, được công nghiệp phê duyệt. Có được suy nghĩ, sự tự tin và các kỹ năng làm cho nhà khoa học dữ liệu trở nên có giá trị.
& nbsp; & nbsp; 5. Làm thế nào để song song hóa bất kỳ chức năng?Cách chung để song song hóa bất kỳ hoạt động nào là thực hiện một chức năng cụ thể sẽ được chạy nhiều lần và làm cho nó chạy tương đồng trong các bộ xử lý khác nhau. Để thực hiện điều này, bạn khởi tạo một 4 với n số lượng bộ xử lý và truyền chức năng bạn muốn song song hóa với một trong các phương thức tương đương 4S. 0 cung cấp các phương thức 9, 0 và 1 để thực hiện bất kỳ chức năng nào chạy song song.Nice! Vì vậy, những gì khác biệt giữa 9 và 0?Cả 4 và 5 đều lấy hàm để được song song làm đối số chính.
Nhưng sự khác biệt là, 9 lấy một đối số 7 chấp nhận các tham số được truyền cho ‘chức năng tương tự như một đối số, trong khi đó, 5 chỉ có thể lấy một điều có thể xảy ra như một đối số.Vì vậy, 0 thực sự phù hợp hơn cho các hoạt động đơn giản hơn nhưng công việc nhanh hơn.Chúng ta sẽ nhận được 1 khi chúng ta thấy cách song song hóa chức năng 5 với 9 và 0.5.1. Song song bằng cách sử dụng pool.apply ()Hãy để song song với chức năng 5 bằng cách sử dụng 0.
5.2. Song song bằng cách sử dụng pool.map () 7 chỉ chấp nhận một điều có thể là đối số.Vì vậy, với tư cách là một cách giải quyết, tôi sửa đổi hàm 7 bằng cách đặt mặc định thành các tham số 8 và 9 để tạo hàm 0 mới để nó chỉ kích thích một danh sách các hàng có thể lặp lại làm đầu vào.Tôi biết đây không phải là một Usecase tốt đẹp là 0, nhưng nó cho thấy rõ nó khác với 9 như thế nào.
5.3. Song song bằng cách sử dụng pool.starmap ()Trong ví dụ trước, chúng ta phải xác định lại hàm 7 để tạo một vài tham số để lấy các giá trị mặc định.Sử dụng 1, bạn có thể tránh làm điều này.Bạn hỏi như thế nào? Giống như 7, 8 cũng chỉ chấp nhận một điều có thể xảy ra như một đối số, nhưng trong 1, mỗi yếu tố trong đó có thể sử dụng được cũng là một điều có thể.Bạn có thể cung cấp các đối số cho ‘chức năng với song song với cùng một thứ tự trong phần tử IT có thể điều chỉnh bên trong này, sẽ lần lượt được giải nén trong quá trình thực thi. Vì vậy, một cách hiệu quả, 8 giống như một phiên bản của 7 chấp nhận các đối số.
6. Xử lý song song không đồng bộCác tương đương không đồng bộ 0, 1 và 2 cho phép bạn thực hiện các quy trình song song không đồng bộ, đó là quá trình tiếp theo có thể bắt đầu ngay khi trước đó không quan tâm đến thứ tự bắt đầu.Kết quả là, không có gì đảm bảo rằng kết quả sẽ theo cùng thứ tự với đầu vào. 6.1 song song với pool.apply_async () 0 rất giống với 9 ngoại trừ việc bạn cần cung cấp chức năng gọi lại cho biết các kết quả được tính toán nên được lưu trữ như thế nào.Tuy nhiên, một cảnh báo với 0 là, thứ tự các số trong kết quả bị xáo trộn cho thấy các quy trình không hoàn thành theo thứ tự nó được bắt đầu.Một cách giải quyết cho điều này là, chúng tôi xác định lại một 6 mới để chấp nhận và trả về số lặp ( 7) và sau đó sắp xếp các kết quả cuối cùng.
Có thể sử dụng 0 mà không cung cấp chức năng 9.Chỉ có vậy, nếu bạn không cung cấp một cuộc gọi lại, thì bạn sẽ nhận được một danh sách các đối tượng 0 chứa các giá trị đầu ra được tính toán từ mỗi quy trình.Từ đó, bạn cần sử dụng phương thức 1 để lấy kết quả cuối cùng mong muốn.
6.2 song song với pool.starmap_async ()Bạn đã thấy cách 0 hoạt động.Bạn có thể tưởng tượng và viết lên một phiên bản tương đương cho 3 và 4 không?Việc thực hiện ở dưới dù sao.
7. Làm thế nào để song song hóa một bản dữ liệu gấu trúc?Cho đến nay, bạn đã thấy cách song song hóa một chức năng bằng cách làm cho nó hoạt động trong danh sách. Nhưng khi làm việc trong phân tích dữ liệu hoặc các dự án học máy, bạn có thể muốn song song hóa các khung dữ liệu gấu trúc, là các đối tượng được sử dụng phổ biến nhất (bên cạnh các mảng Numpy) để lưu trữ dữ liệu bảng. Khi nói đến song song với 5, bạn có thể thực hiện các chức năng song song để lấy làm tham số đầu vào:
2 đầu tiên có thể được thực hiện bằng cách sử dụng mô -đun 8.Nhưng đối với cái cuối cùng, đó là song song trên toàn bộ khung dữ liệu, chúng tôi sẽ sử dụng gói 7 sử dụng 8 để tuần tự hóa trong nội bộ.Đầu tiên, hãy tạo một DataFrame mẫu và xem cách thực hiện các giao dịch thông minh và khôn ngoan về cột. Một cái gì đó như sử dụng 9 trên hàm do người dùng xác định nhưng song song.
Chúng tôi có một khung dữ liệu. Hãy để áp dụng chức năng 0 trên mỗi hàng, nhưng chạy 4 quy trình cùng một lúc.Để làm điều này, chúng tôi khai thác 1.Bằng cách đặt 2, bạn đang chuyển từng hàng của DataFrame dưới dạng một bộ đơn giản cho hàm 0. 0Đó là một ví dụ về song song hàng ngày. Hãy để Lừa cũng làm một song song hóa cột. Đối với điều này, tôi sử dụng 4 để chuyển toàn bộ cột làm chuỗi cho hàm 5. 1Bây giờ đến phần thứ ba - song song hóa một hàm chấp nhận dữ liệu gấu trúc, mảng numpy, v.v ... Pathos theo kiểu 8 của: POOL> MAP> Đóng> Tham gia> Xóa.Kiểm tra các tài liệu Pathos để biết thêm thông tin. 2Cảm ơn NotSoprocoder vì sự đóng góp này dựa trên Pathos. Nếu bạn đã quen thuộc với các khung dữ liệu gấu trúc nhưng muốn thực hành và làm chủ nó, hãy xem các bài tập gấu trúc này. 8. Bài tậpBài 1: Sử dụng 9 to get the row wise common items in 8 and 9. 3Hiển thị giải pháp 4
Bài 2: Sử dụng 7 to run the following python scripts in parallel. Script names: ‘script1.py’, ‘script2.py’, ‘script3.py’ Show Solution 5Bài 3: Bình thường hóa từng hàng của mảng 2D (danh sách) thành thay đổi giữa 0 đến 1. Normalize each row of 2d array (list) to vary between 0 and 1. 6Hiển thị giải pháp 79. Kết luậnHy vọng bạn đã có thể giải quyết các bài tập trên, xin chúc mừng nếu bạn đã làm! Trong bài đăng này, chúng tôi đã thấy quy trình tổng thể và nhiều cách khác nhau để thực hiện xử lý song song bằng mô -đun đa xử lý. Quy trình được mô tả ở trên là khá giống nhau ngay cả khi bạn làm việc trên các máy lớn hơn với nhiều số bộ xử lý hơn, nơi bạn có thể gặt hái những lợi ích tốc độ thực của xử lý song song. Happy Coding và tôi sẽ gặp bạn trong phần tiếp theo! Bài viết đề xuấtHướng dẫn của Dask - Cách xử lý dữ liệu lớn trong Hướng dẫn Python Python JSON Python Regex Hướng dẫn đăng nhập Python Hướng dẫn Bộ sưu tập Python Hướng dẫn về Mô -đun yêu cầu Python Xử lý song song trong Python là gì?Đa xử lý Python: Song song dựa trên quá trình trong Python Mô-đun đa xử lý cho phép bạn tạo nhiều quy trình, mỗi trong số chúng với trình thông dịch Python riêng. Vì lý do này, đa xử lý Python hoàn thành song song dựa trên quá trình.The multiprocessing module allows you to create multiple processes, each of them with its own Python interpreter. For this reason, Python multiprocessing accomplishes process-based parallelism.
Làm thế nào để xử lý song song hoạt động?Xử lý song song liên quan đến việc thực hiện một nhiệm vụ lớn, chia nó thành một số nhiệm vụ nhỏ hơn, và sau đó làm việc trên từng nhiệm vụ nhỏ hơn đó.Mục tiêu của cách tiếp cận phân chia và chinh phục này là hoàn thành nhiệm vụ lớn hơn trong thời gian ngắn hơn so với việc thực hiện nó trong một khối lớn.taking a large task, dividing it into several smaller tasks, and then working on each of those smaller tasks simultaneously. The goal of this divide-and-conquer approach is to complete the larger task in less time than it would have taken to do it in one large chunk.
Có thể lập trình song song trong Python?Có một số cách phổ biến để song song hóa mã Python.Bạn có thể khởi chạy một số trường hợp ứng dụng hoặc tập lệnh để thực hiện song song.Cách tiếp cận này là tuyệt vời khi bạn không cần trao đổi dữ liệu giữa các công việc song song.. You can launch several application instances or a script to perform jobs in parallel. This approach is great when you don't need to exchange data between parallel jobs.
Làm thế nào để xếp hàng đa xử lý Python hoạt động?Đa xử lý.Hàng đợi cung cấp hàng đợi FIFO đầu tiên, đầu tiên, có nghĩa là các mục được lấy từ hàng đợi theo thứ tự chúng được thêm vào.Các mục đầu tiên được thêm vào hàng đợi sẽ là các mục đầu tiên được truy xuất.provides a first-in, first-out FIFO queue, which means that the items are retrieved from the queue in the order they were added. The first items added to the queue will be the first items retrieved. |