Quy trình trong Python

Đ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 multiprocessing
74

import multiprocessing
75
import multiprocessing
76

import multiprocessing
77

import multiprocessing
0
import multiprocessing
1

import multiprocessing
2____03

import multiprocessing
2
import multiprocessing
5

import multiprocessing
2____03

import multiprocessing
2______09
import multiprocessing
00
import multiprocessing
01
import multiprocessing
02
import multiprocessing
03
import multiprocessing
04
import multiprocessing
05
import multiprocessing
06
import multiprocessing
05
import multiprocessing
08

import multiprocessing
77

import multiprocessing
0
import multiprocessing
01

import multiprocessing
2____03

import multiprocessing
2____205

import multiprocessing
2____03

import multiprocessing
2______09____100
import multiprocessing
01
import multiprocessing
02
import multiprocessing
03
import multiprocessing
04
import multiprocessing
05
import multiprocessing
08

import multiprocessing
77

import multiprocessing
08
import multiprocessing
09____380
import multiprocessing
80
import multiprocessing
82
import multiprocessing
83

_______02____385

import multiprocessing
2______387
import multiprocessing
80
import multiprocessing
89
import multiprocessing
80
import multiprocessing
741____380
import multiprocessing
00
import multiprocessing
744
import multiprocessing
745

import multiprocessing
2______1747
import multiprocessing
80
import multiprocessing
89
import multiprocessing
80
import multiprocessing
751
import multiprocessing
80
import multiprocessing
00
import multiprocessing
744
import multiprocessing
745

import multiprocessing
77

import multiprocessing
2____1758

import multiprocessing
2____1760

import multiprocessing
2____1762

import multiprocessing
2____1764

import multiprocessing
77

import multiprocessing
2____1767

import multiprocessing
2____1769

import multiprocessing
2____1771

import multiprocessing
2____1773

import multiprocessing
77

import multiprocessing
2____1776

import multiprocessing
2______09____100
import multiprocessing
00
import multiprocessing
01

import multiprocessing
1

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
    
    0

    Do đó, 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 multiprocessing
74

import multiprocessing
75
import multiprocessing
76

import multiprocessing
75
import multiprocessing
06

import multiprocessing
77

import multiprocessing
0
import multiprocessing
09

import multiprocessing
2
import multiprocessing
11

import multiprocessing
2______09____100
import multiprocessing
15
import multiprocessing
02
import multiprocessing
03
import multiprocessing
18

import multiprocessing
77

import multiprocessing
0
import multiprocessing
21

import multiprocessing
2
import multiprocessing
11

import multiprocessing
2______09____100
import multiprocessing
27
import multiprocessing
02
import multiprocessing
03
import multiprocessing
18

import multiprocessing
77

import multiprocessing
08
import multiprocessing
09____380
import multiprocessing
80
import multiprocessing
82
import multiprocessing
83

import multiprocessing
2
import multiprocessing
39

import multiprocessing
2______09____100
import multiprocessing
43
import multiprocessing
02
import multiprocessing
03
import multiprocessing
18

import multiprocessing
77

_______02____385

import multiprocessing
2______387____380
import multiprocessing
89
import multiprocessing
80
import multiprocessing
55

import multiprocessing
2______1747
import multiprocessing
80
import multiprocessing
89
import multiprocessing
80
import multiprocessing
61

import multiprocessing
77

import multiprocessing
2____064

import multiprocessing
2____1760

import multiprocessing
2____1764

import multiprocessing
77

import multiprocessing
2
import multiprocessing
71

import multiprocessing
2______09____100
import multiprocessing
75
import multiprocessing
02
import multiprocessing
03
import multiprocessing
78

import multiprocessing
2______09____100
import multiprocessing
82
import multiprocessing
02
import multiprocessing
03
import multiprocessing
85

import multiprocessing
77

import multiprocessing
2____088

import multiprocessing
2____1769

import multiprocessing
2____1773

import multiprocessing
77

import multiprocessing
2____1776

_______02____09____100

import multiprocessing
99
import multiprocessing
01

import multiprocessing
77

import multiprocessing
2____1003

import multiprocessing
2______09____100
import multiprocessing
007
import multiprocessing
02
import multiprocessing
03
import multiprocessing
010

import multiprocessing
2______09____100
import multiprocessing
014
import multiprocessing
02
import multiprocessing
03
import multiprocessing
017

import multiprocessing
8
  • 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

Quá trình tham gia [] trong Python là gì?

p. join[] # dòng này cho phép bạn đợi các tiến trình . Đoạn mã trên bắt đầu bằng cách nhập gói đa xử lý, sau đó bằng cách xác định đối tượng sinh sản. Tiếp theo, mã sau đó sử dụng câu lệnh if để kiểm tra xem tên của quy trình được sinh ra có được gọi là __main__.

Lớp quy trình trong Python là gì?

Quy trình là một phiên bản đang chạy của chương trình máy tính . Mỗi chương trình Python được thực thi trong một Quy trình, đây là phiên bản mới của trình thông dịch Python. Mỗi quy trình Python có một luồng được sử dụng để thực thi các hướng dẫn chương trình được gọi là MainThread.

Có bao nhiêu quy trình có thể sử dụng trong Python?

Số lượng worker process tối đa có thể bị giới hạn bởi hệ điều hành của bạn. Ví dụ: trên windows, bạn sẽ không thể tạo nhiều hơn 61 quy trình con trong chương trình Python của mình. Các hệ điều hành khác như macOS và Linux có thể áp đặt giới hạn trên đối với số lượng quy trình có thể được sinh ra hoặc rẽ nhánh.

Sự khác biệt giữa nhóm và quy trình trong Python là gì?

Nhóm thường được sử dụng cho các tác vụ không đồng nhất, trong khi đa xử lý. Quy trình thường được sử dụng cho các tác vụ đồng nhất . Pool được thiết kế để thực hiện các tác vụ không đồng nhất, nghĩa là các tác vụ không giống nhau. Ví dụ: mỗi tác vụ được gửi tới nhóm quy trình có thể là một chức năng mục tiêu khác.

Chủ Đề