Bash chạy song song các tập lệnh python

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách song song hóa mã python của bạn. Chúng ta sẽ tìm hiểu về kiến ​​trúc bộ nhớ, tổ chức và cách song song hóa mã python của bạn. Chúng tôi sẽ đề cập đến hai tình huống sau

  1. Thực thi song song nhiều quy trình/mã
  2. Thực thi nhiều quy trình/mã  song song và theo trình tự

Mục lục

  • Các loại kiến ​​trúc bộ nhớ tính toán song song khác nhau
  • tổ chức bộ nhớ
  • Trường hợp 1 – Thực thi song song nhiều quy trình/mã
  • Trường hợp 2 – Thực thi nhiều quy trình/mã song song và theo trình tự

Các loại kiến ​​trúc bộ nhớ tính toán song song khác nhau

Kiến trúc bộ nhớ máy tính được phân loại dựa trên dữ liệu và số lệnh mà nó có thể xử lý đồng thời. Dựa trên hai tiêu chí đã đề cập ở trên, chúng tôi có bốn kiến ​​trúc máy tính sau  –

  1. Dữ liệu đơn lệnh đơn (SISD) – Các hệ thống này có bộ xử lý đơn và có khả năng thực hiện một lệnh đơn trên một tập hợp luồng dữ liệu. Nếu bạn chuyển nhiều hơn một lệnh, thì chúng sẽ được xử lý theo trình tự. Một trình tự quy trình điển hình bao gồm 1. tìm nạp dữ liệu từ bộ nhớ còn được gọi là thanh ghi, 2. Giải mã lệnh, và 3. thực hiện lệnh trên dữ liệu
  2. Một lệnh nhiều dữ liệu (SIMD) – Trong hệ thống SIMD, mỗi bộ xử lý giống hệt nhau và có bộ nhớ cục bộ riêng. Điều này cho phép bộ xử lý tự do làm việc đồng thời và thực hiện cùng một lệnh, nhưng trên các bộ dữ liệu khác nhau. Việc thiết kế và triển khai các thuật toán cho các máy tính này tương đối dễ dàng. Một loạt các ứng dụng sử dụng hệ thống SIMD để giải quyết nhiều vấn đề. Lưu ý – Chỉ những vấn đề có thể được chia nhỏ và yêu cầu cùng hướng dẫn trên các khối dữ liệu khác nhau mới có thể được giải quyết bằng hệ thống SIMD
  3. Nhiều hướng dẫn dữ liệu đơn (MISD) – Trong kiến ​​trúc này, một đơn vị bộ nhớ duy nhất được chia sẻ với tất cả các bộ xử lý. Điều đó cho phép bộ xử lý truy cập bộ nhớ đồng thời. Hơn nữa, cho phép các hệ thống thực hiện nhiều thao tác trên cùng một phần dữ liệu. Lưu ý – Các loại hệ thống này được sử dụng cho các nhiệm vụ chuyên biệt như mã hóa dữ liệu. Đó là lý do tại sao bạn sẽ thấy rằng chúng không phổ biến trong môi trường thương mại
  4. Nhiều hướng dẫn nhiều dữ liệu (MIMD) – Các hệ thống này cung cấp một kiến ​​trúc tính toán hấp dẫn. Trong các hệ thống MIMD, mỗi bộ xử lý có bộ điều khiển riêng và bộ nhớ. Điều đó cho phép bộ xử lý chạy các hướng dẫn khác nhau trên các bộ dữ liệu khác nhau. Điều này cũng có nghĩa là tất cả các bộ xử lý có khả năng hoạt động không đồng bộ. Lưu ý – Kiến trúc này rất phổ biến và được áp dụng trong máy tính cá nhân, siêu máy tính và máy tính mạng

tổ chức bộ nhớ

Một khía cạnh khác mà chúng ta phải biết để đánh giá quá trình xử lý song song là Cấp phát bộ nhớ. Thực sự không quan trọng bộ xử lý của bạn nhanh đến mức nào, nếu bộ nhớ không thể cung cấp dữ liệu và hướng dẫn ở tốc độ đủ, thì tốc độ xử lý của bạn sẽ không được cải thiện. Hai loại hệ thống tổ chức bộ nhớ là –

  1. Bộ nhớ dùng chung – Các hệ thống này thường có bộ nhớ ảo cao và tất cả các bộ xử lý đều có quyền truy cập dữ liệu và hướng dẫn như nhau
  2. Bộ nhớ phân tán – Trong các hệ thống này, mỗi bộ xử lý có bộ nhớ cục bộ riêng mà các bộ xử lý khác không thể truy cập được

Điều bắt buộc đối với các lập trình viên là tìm hiểu về sự khác biệt giữa các hệ thống bộ nhớ dùng chung và phân tán. Điều này giúp hiểu được các phần khác nhau của lập trình song song sẽ tương tác như thế nào. Ví dụ: bộ nhớ dùng chung không thể được sử dụng cho đến khi nó hoàn thành tác vụ đầu tiên. Giống như thông tin này, có nhiều chi tiết khác mà người ta phải biết. Điều này sẽ giúp bạn viết và phát triển các chương trình và khuôn khổ tốt hơn

Trường hợp 1 – Thực thi song song nhiều quy trình/mã

Để chạy song song mã của chúng tôi, chúng tôi sẽ sử dụng thư viện đa xử lý. Mô-đun này giúp việc chạy song song nhiều quy trình trở nên rất đơn giản. Dưới đây là ba bước đơn giản để đạt được kết quả cuối cùng

  1. Nhập đa xử lý và thư viện hệ điều hành. Trong trường hợp bạn muốn nắm bắt thời gian thực hiện thì hãy nhập mô-đun thời gian
  2. Tạo một bộ gồm tất cả các tập lệnh mà bạn muốn chạy song song
  3. Khởi tạo lớp nhóm từ mô-đun đa xử lý

con trăn

1

2

3

4

5

6

7

8

9

10

11

12

13

nhập đa xử lý

nhập os                                                      

 

# Tạo bộ dữ liệu của tất cả các quy trình

all_processes = ('script_A. py', 'script_B. py', 'script_C. py', 'script_D. py')                                    

                                                  

# Khối mã này cho phép chúng tôi gọi tập lệnh từ dòng lệnh.