Đa xử lý đề cập đến khả năng của một hệ thống hỗ trợ nhiều bộ xử lý cùng một lúc. Các ứng dụng trong hệ thống đa xử lý được chia thành các quy trình nhỏ hơn chạy độc lập. Hệ điều hành phân bổ các luồng này cho bộ xử lý cải thiện hiệu suất của hệ thống
Tại sao đa xử lý?
Hãy xem xét một hệ thống máy tính có một bộ xử lý. Nếu nó được chỉ định một số quy trình cùng một lúc, nó sẽ phải tạm dừng từng tác vụ và nhanh chóng chuyển sang tác vụ khác để giữ cho tất cả các quy trình tiếp tục.
Tình huống này giống như một đầu bếp làm việc trong bếp một mình. Anh ấy phải làm một số công việc như nướng, khuấy, nhào bột, v.v.
Ý chính là. Bạn càng phải làm nhiều nhiệm vụ cùng một lúc, thì càng khó theo dõi tất cả chúng và việc giữ đúng thời gian trở nên khó khăn hơn.
Đây là nơi phát sinh khái niệm đa xử lý.
Một hệ thống đa xử lý có thể có.
- đa xử lý, tôi. e. một máy tính có nhiều hơn một bộ xử lý trung tâm
- bộ xử lý đa lõi, tôi. e. một thành phần máy tính đơn lẻ với hai hoặc nhiều đơn vị xử lý thực tế độc lập [được gọi là “lõi”]
Tại đây, CPU có thể dễ dàng thực thi nhiều tác vụ cùng lúc, với mỗi tác vụ sử dụng bộ xử lý riêng
Nó giống như đầu bếp trong tình huống cuối cùng được hỗ trợ bởi các trợ lý của mình. Giờ đây, họ có thể tự phân chia nhiệm vụ và đầu bếp không cần phải chuyển đổi giữa các nhiệm vụ của mình
Đa xử lý trong Python
Trong Python, mô-đun đa xử lý bao gồm một API rất đơn giản và trực quan để phân chia công việc giữa nhiều quy trình.
Chúng ta hãy xem xét một ví dụ đơn giản sử dụng mô-đun đa xử lý.
import multiprocessing74
import multiprocessing75
import multiprocessing76
import multiprocessing77
import multiprocessing0
import multiprocessing1
import multiprocessing2____03
import multiprocessing2
import multiprocessing5
import multiprocessing2____03
import multiprocessing2______09
import multiprocessing00
import multiprocessing01
import multiprocessing02
import multiprocessing03
import multiprocessing04
import multiprocessing05
import multiprocessing06
import multiprocessing05
import multiprocessing08
import multiprocessing77
import multiprocessing0
import multiprocessing01
import multiprocessing2____03
import multiprocessing2____205
import multiprocessing2____03
import multiprocessing2______09____100
import multiprocessing01
import multiprocessing02
import multiprocessing03
import multiprocessing04
import multiprocessing05
import multiprocessing08
import multiprocessing77
import multiprocessing08
import multiprocessing09____380
import multiprocessing80
import multiprocessing82
import multiprocessing83
_______02____385
import multiprocessing2______387
import multiprocessing80
import multiprocessing89
import multiprocessing80
import multiprocessing741____380
import multiprocessing00
import multiprocessing744
import multiprocessing745
import multiprocessing2______1747
import multiprocessing80
import multiprocessing89
import multiprocessing80
import multiprocessing751
import multiprocessing80
import multiprocessing00
import multiprocessing744
import multiprocessing745
import multiprocessing77
import multiprocessing2____1758
import multiprocessing2____1760
import multiprocessing2____1762
import multiprocessing2____1764
import multiprocessing77
import multiprocessing2____1767
import multiprocessing2____1769
import multiprocessing2____1771
import multiprocessing2____1773
import multiprocessing77
import multiprocessing2____1776
import multiprocessing2______09____100
import multiprocessing00
import multiprocessing01
import multiprocessing1
Hãy để chúng tôi cố gắng hiểu đoạn mã trên
- Để nhập mô-đun đa xử lý, chúng tôi thực hiện.
import multiprocessing
- Để tạo một process, chúng ta tạo một đối tượng thuộc lớp Process. Phải mất các đối số sau
- Mục tiêu. chức năng được thực thi bởi tiến trình
- tranh luận. các đối số được chuyển đến hàm mục tiêu
Ghi chú. Trình tạo quy trình cũng nhận nhiều đối số khác sẽ được thảo luận sau. Trong ví dụ trên, chúng tôi đã tạo 2 quy trình với các chức năng mục tiêu khác nhau
import multiprocessing
0 - Để bắt đầu một process, chúng ta sử dụng phương thức start của lớp Process.
import multiprocessing
0 - Khi các quy trình bắt đầu, chương trình hiện tại cũng tiếp tục thực thi. Để dừng thực thi chương trình hiện tại cho đến khi quá trình hoàn tất, chúng tôi sử dụng phương thức nối.
import multiprocessing
0Do đó, chương trình hiện tại trước tiên sẽ đợi hoàn thành p1 và sau đó là p2. Sau khi hoàn thành, các câu lệnh tiếp theo của chương trình hiện tại được thực hiện
Chúng ta hãy xem xét một chương trình khác để hiểu khái niệm về các quy trình khác nhau chạy trên cùng một tập lệnh python. Trong ví dụ dưới đây, chúng tôi in ID của các quy trình đang chạy các chức năng đích
import multiprocessing74
import multiprocessing75
import multiprocessing76
import multiprocessing75
import multiprocessing06
import multiprocessing77
import multiprocessing0
import multiprocessing09
import multiprocessing2
import multiprocessing11
import multiprocessing2______09____100
import multiprocessing15
import multiprocessing02
import multiprocessing03
import multiprocessing18
import multiprocessing77
import multiprocessing0
import multiprocessing21
import multiprocessing2
import multiprocessing11
import multiprocessing2______09____100
import multiprocessing27
import multiprocessing02
import multiprocessing03
import multiprocessing18
import multiprocessing77
import multiprocessing08
import multiprocessing09____380
import multiprocessing80
import multiprocessing82
import multiprocessing83
import multiprocessing2
import multiprocessing39
import multiprocessing2______09____100
import multiprocessing43
import multiprocessing02
import multiprocessing03
import multiprocessing18
import multiprocessing77
_______02____385
import multiprocessing2______387____380
import multiprocessing89
import multiprocessing80
import multiprocessing55
import multiprocessing2______1747
import multiprocessing80
import multiprocessing89
import multiprocessing80
import multiprocessing61
import multiprocessing77
import multiprocessing2____064
import multiprocessing2____1760
import multiprocessing2____1764
import multiprocessing77
import multiprocessing2
import multiprocessing71
import multiprocessing2______09____100
import multiprocessing75
import multiprocessing02
import multiprocessing03
import multiprocessing78
import multiprocessing2______09____100
import multiprocessing82
import multiprocessing02
import multiprocessing03
import multiprocessing85
import multiprocessing77
import multiprocessing2____088
import multiprocessing2____1769
import multiprocessing2____1773
import multiprocessing77
import multiprocessing2____1776
_______02____09____100
import multiprocessing99
import multiprocessing01
import multiprocessing77
import multiprocessing2____1003
import multiprocessing2______09____100
import multiprocessing007
import multiprocessing02
import multiprocessing03
import multiprocessing010
import multiprocessing2______09____100
import multiprocessing014
import multiprocessing02
import multiprocessing03
import multiprocessing017
import multiprocessing8
- Tập lệnh python chính có ID quy trình khác và mô-đun đa xử lý tạo ra các quy trình mới với ID quy trình khác khi chúng ta tạo các đối tượng Quy trình p1 và p2. Trong chương trình trên, chúng tôi sử dụng os. getpid[] để lấy ID của tiến trình đang chạy hàm đích hiện tại
Lưu ý rằng nó khớp với ID tiến trình của p1 và p2 mà chúng ta có được bằng cách sử dụng thuộc tính pid của lớp Process
- Mỗi tiến trình chạy độc lập và có không gian bộ nhớ riêng
- Ngay khi việc thực thi chức năng đích kết thúc, các quy trình sẽ kết thúc. Trong chương trình trên, chúng ta đã sử dụng phương thức is_alive của lớp Process để kiểm tra xem một tiến trình có còn hoạt động hay không
Hãy xem xét sơ đồ bên dưới để hiểu các quy trình mới khác với tập lệnh Python chính như thế nào.
Vì vậy, đây là phần giới thiệu ngắn gọn về đa xử lý trong Python. Một số bài viết tiếp theo sẽ đề cập đến các chủ đề liên quan đến đa xử lý.
- Chia sẻ dữ liệu giữa các tiến trình sử dụng Mảng, giá trị và hàng đợi
- Khái niệm Lock và Pool trong đa xử lý
Tiếp theo
- Đa xử lý trong Python. bộ 2
- Đồng bộ hóa và gộp các quy trình trong Python
Người giới thiệu
- http. //học hỏi. thị sai. com/tutorials/language/blocklyprop/blocklyprop-functions-and-multicore/bit-about-multicore
- https. // tài liệu. con trăn. org/3/library/multiprocessing. html
Bài viết này được đóng góp bởi Nikhil Kumar. Nếu bạn thích GeekforGeeks và muốn đóng góp, bạn cũng có thể viết một bài báo bằng cách sử dụng đóng góp. chuyên viên máy tính. org hoặc gửi bài viết của bạn tới donate@geeksforgeeks. tổ chức. Xem bài viết của bạn xuất hiện trên trang chính của GeeksforGeeks và trợ giúp các Geeks khác
Vui lòng viết bình luận nếu bạn thấy bất cứ điều gì không chính xác hoặc bạn muốn chia sẻ thêm thông tin về chủ đề thảo luận ở trên