square_sum = multiprocessing.Value['i']
1 square_sum.value = sum[result]
0 result = multiprocessing.Array['i', 4]
6 square_sum.value = sum[result]
2 square_sum.value = sum[result]
3 square_sum.value = sum[result]
4 square_sum.value = sum[result]
5 square_sum.value = sum[result]
4 square_sum.value = sum[result]
7 square_sum.value = sum[result]
4 square_sum.value = sum[result]
9 square_sum.value = sum[result]
10 result = multiprocessing.Array['i', 4]
3 square_sum = multiprocessing.Value['i']
1 square_sum.value = sum[result]
13 square_sum = multiprocessing.Value['i']
1 square_sum.value = sum[result]
15 result = multiprocessing.Array['i', 4]
6 square_sum.value = sum[result]
17 result = multiprocessing.Array['i', 4]
6 square_sum.value = sum[result]
19 result = multiprocessing.Array['i', 4]
6 result = multiprocessing.Array['i', 4]
21 square_sum = multiprocessing.Value['i']
1 result = multiprocessing.Array['i', 4]
23 square_sum = multiprocessing.Value['i']
1____225 square_sum = multiprocessing.Value['i']
1____227 square_sum = multiprocessing.Value['i']
1 result = multiprocessing.Array['i', 4]
29 result = multiprocessing.Array['i', 4]
3_______01____3302
square_sum = multiprocessing.Value['i']
1 square_sum.value = sum[result]
54 square_sum.value = sum[result]
55 square_sum.value = sum[result]
306 square_sum.value = sum[result]
57 square_sum.value = sum[result]
58 square_sum.value = sum[result]
59 square_sum.value = sum[result]
1Trong ví dụ trên, chúng tôi cố gắng in nội dung của kết quả danh sách toàn cầu ở hai nơi
- Trong hàm square_list. Vì chức năng này được gọi bởi tiến trình p1, nên danh sách kết quả chỉ được thay đổi trong không gian bộ nhớ của tiến trình p1
- Sau khi hoàn thành quá trình p1 trong chương trình chính. Vì chương trình chính được điều hành bởi một tiến trình khác nên không gian bộ nhớ của nó vẫn chứa danh sách kết quả trống
Sơ đồ hiển thị dưới đây xóa khái niệm này
Chia sẻ dữ liệu giữa các tiến trình
- Bộ nhớ dùng chung. mô-đun đa xử lý cung cấp các đối tượng Mảng và Giá trị để chia sẻ dữ liệu giữa các quy trình
- Mảng. một mảng ctypes được phân bổ từ bộ nhớ dùng chung
- Giá trị. một đối tượng ctypes được phân bổ từ bộ nhớ dùng chung
Đưa ra dưới đây là một ví dụ đơn giản cho thấy việc sử dụng Mảng và Giá trị để chia sẻ dữ liệu giữa các quy trình
1result = multiprocessing.Array['i', 4]
2result = multiprocessing.Array['i', 4]
3result = multiprocessing.Array['i', 4]
9result = multiprocessing.Array['i', 4]
314square_sum.value = sum[result]
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
4square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
1____3322square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
63square_sum.value = sum[result]
325square_sum.value = sum[result]
65square_sum.value = sum[result]
327square_sum.value = sum[result]
328square_sum.value = sum[result]
67square_sum.value = sum[result]
330square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
64square_sum.value = sum[result]
69square_sum.value = sum[result]
64square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
1____3337square_sum = multiprocessing.Value['i']
1____3339square_sum = multiprocessing.Value['i']
6result = multiprocessing.Array['i', 4]
341square_sum.value = sum[result]
342square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
1____3345square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
54square_sum.value = sum[result]
55square_sum.value = sum[result]
56square_sum.value = sum[result]
57square_sum.value = sum[result]
58square_sum.value = sum[result]
352square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
1____3355square_sum = multiprocessing.Value['i']
1____354square_sum = multiprocessing.Value['i']
55square_sum.value = sum[result]
359square_sum.value = sum[result]
57square_sum.value = sum[result]
58square_sum.value = sum[result]
362square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
61square_sum.value = sum[result]
62square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
6result = multiprocessing.Array['i', 4]
65square_sum.value = sum[result]
66square_sum.value = sum[result]
_______01____968
1square_sum = multiprocessing.Value['i']
0square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
2square_sum.value = sum[result]
3square_sum.value = sum[result]
4square_sum.value = sum[result]
5square_sum.value = sum[result]
4square_sum.value = sum[result]
7square_sum.value = sum[result]
4square_sum.value = sum[result]
9square_sum.value = sum[result]
10square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
_______01____3386
1square_sum = multiprocessing.Value['i']
5result = multiprocessing.Array['i', 4]
6result = multiprocessing.Array['i', 4]
390square_sum.value = sum[result]
391square_sum.value = sum[result]
4square_sum.value = sum[result]
9square_sum.value = sum[result]
394square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
_______01____3397
1square_sum = multiprocessing.Value['i']
399square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
01result = multiprocessing.Array['i', 4]
391square_sum.value = sum[result]
394square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
1square_sum = multiprocessing.Value['i']
13square_sum.value = sum[result]
1square_sum = multiprocessing.Value['i']
15square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
17square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
19square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
14result = multiprocessing.Array['i', 4]
3result = multiprocessing.Array['i', 4]
1square_sum = multiprocessing.Value['i']
23result = multiprocessing.Array['i', 4]
1____225square_sum = multiprocessing.Value['i']
3result = multiprocessing.Array['i', 4]
1square_sum = multiprocessing.Value['i']
22result = multiprocessing.Array['i', 4]
1square_sum = multiprocessing.Value['i']
29result = multiprocessing.Array['i', 4]
3result = multiprocessing.Array['i', 4]
1____227square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
54square_sum.value = sum[result]
55square_sum.value = sum[result]
306square_sum.value = sum[result]
57square_sum.value = sum[result]
58square_sum.value = sum[result]
352square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
1____3355square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
54square_sum.value = sum[result]
55square_sum.value = sum[result]
41result = multiprocessing.Array['i', 4]
57square_sum.value = sum[result]
58square_sum.value = sum[result]
362square_sum.value = sum[result]
3square_sum.value = sum[result]
Hãy để chúng tôi cố gắng hiểu từng dòng mã trên
- Trước hết, chúng ta tạo một Array kết quả như thế này.
result = multiprocessing.Array['i', 4]
- Đối số đầu tiên là kiểu dữ liệu. 'i' là viết tắt của số nguyên trong khi 'd' là viết tắt của kiểu dữ liệu float
- Đối số thứ hai là kích thước của mảng. Ở đây, chúng ta tạo một mảng gồm 4 phần tử
Tương tự ta tạo một Value square_sum như thế này
square_sum = multiprocessing.Value['i']
Ở đây, chúng ta chỉ cần xác định kiểu dữ liệu. Giá trị có thể được cung cấp một giá trị ban đầu [giả sử 10] như thế này
6square_sum.value = sum[result]
- Thứ hai, chúng tôi chuyển kết quả và square_sum làm đối số trong khi tạo đối tượng Quy trình.
5square_sum.value = sum[result]
- các phần tử mảng kết quả được cung cấp một giá trị bằng cách chỉ định chỉ mục của phần tử mảng.
6square_sum.value = sum[result]
square_sum được cung cấp một giá trị bằng cách sử dụng thuộc tính giá trị của nó
square_sum.value = sum[result]
- Để in các phần tử mảng kết quả, chúng ta sử dụng result[. ] để in mảng hoàn chỉnh.
1square_sum.value = sum[result]
Giá trị của square_sum được in đơn giản là
2result = multiprocessing.Array['i', 4]
Dưới đây là sơ đồ mô tả cách các quy trình chia sẻ đối tượng Mảng và Giá trị
- Quá trình máy chủ. Bất cứ khi nào chương trình python bắt đầu, một quy trình máy chủ cũng được bắt đầu. Từ đó trở đi, bất cứ khi nào cần một quy trình mới, quy trình mẹ sẽ kết nối với máy chủ và yêu cầu nó rẽ nhánh một quy trình mới.
Tiến trình máy chủ có thể chứa các đối tượng Python và cho phép các tiến trình khác thao tác với chúng bằng proxy.
mô-đun đa xử lý cung cấp lớp Trình quản lý điều khiển quy trình máy chủ. Do đó, các nhà quản lý cung cấp một cách để tạo dữ liệu có thể được chia sẻ giữa các quy trình khác nhau.Trình quản lý quy trình máy chủ linh hoạt hơn so với việc sử dụng các đối tượng bộ nhớ dùng chung vì chúng có thể được tạo để hỗ trợ các loại đối tượng tùy ý như danh sách, từ điển, Hàng đợi, Giá trị, Mảng, v.v. Ngoài ra, một trình quản lý duy nhất có thể được chia sẻ bởi các quy trình trên các máy tính khác nhau qua mạng. Tuy nhiên, chúng chậm hơn so với sử dụng bộ nhớ dùng chung
Hãy xem xét ví dụ được đưa ra dưới đây
1result = multiprocessing.Array['i', 4]
2result = multiprocessing.Array['i', 4]
3result = multiprocessing.Array['i', 4]
9result = multiprocessing.Array['i', 4]
49result = multiprocessing.Array['i', 4]
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
_______01____253
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
1____563square_sum = multiprocessing.Value['i']
58result = multiprocessing.Array['i', 4]
65square_sum.value = sum[result]
60result = multiprocessing.Array['i', 4]
67square_sum.value = sum[result]
54square_sum.value = sum[result]
55square_sum.value = sum[result]
64result = multiprocessing.Array['i', 4]
57square_sum.value = sum[result]
58square_sum.value = sum[result]
67result = multiprocessing.Array['i', 4]
68result = multiprocessing.Array['i', 4]
69result = multiprocessing.Array['i', 4]
3square_sum.value = sum[result]
71result = multiprocessing.Array['i', 4]
3result = multiprocessing.Array['i', 4]
9result = multiprocessing.Array['i', 4]
74result = multiprocessing.Array['i', 4]
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
78result = multiprocessing.Array['i', 4]
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
1____282square_sum = multiprocessing.Value['i']
1____354____355square_sum = multiprocessing.Value['i']
86result = multiprocessing.Array['i', 4]
394square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
61square_sum.value = sum[result]
62square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
6result = multiprocessing.Array['i', 4]
93result = multiprocessing.Array['i', 4]
66square_sum.value = sum[result]
1____296square_sum = multiprocessing.Value['i']
67square_sum.value = sum[result]
98result = multiprocessing.Array['i', 4]
67square_sum.value = sum[result]
00square_sum = multiprocessing.Value['i']
6result = multiprocessing.Array['i', 4]
02square_sum = multiprocessing.Value['i']
03square_sum = multiprocessing.Value['i']
04square_sum = multiprocessing.Value['i']
05square_sum = multiprocessing.Value['i']
4square_sum.value = sum[result]
07square_sum = multiprocessing.Value['i']
08square_sum = multiprocessing.Value['i']
09square_sum = multiprocessing.Value['i']
4square_sum.value = sum[result]
11square_sum = multiprocessing.Value['i']
08square_sum = multiprocessing.Value['i']
13square_sum = multiprocessing.Value['i']
4square_sum.value = sum[result]
11square_sum = multiprocessing.Value['i']
16square_sum = multiprocessing.Value['i']
67square_sum.value = sum[result]
18square_sum = multiprocessing.Value['i']
67square_sum.value = sum[result]
20square_sum = multiprocessing.Value['i']
6result = multiprocessing.Array['i', 4]
55square_sum.value = sum[result]
23square_sum = multiprocessing.Value['i']
4square_sum.value = sum[result]
25square_sum = multiprocessing.Value['i']
394square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
67square_sum.value = sum[result]
29square_sum = multiprocessing.Value['i']
67square_sum.value = sum[result]
15square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
17square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
35square_sum = multiprocessing.Value['i']
6result = multiprocessing.Array['i', 4]
37square_sum = multiprocessing.Value['i']
67square_sum.value = sum[result]
39square_sum = multiprocessing.Value['i']
6result = multiprocessing.Array['i', 4]
17square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
43square_sum = multiprocessing.Value['i']
6result = multiprocessing.Array['i', 4]
45square_sum = multiprocessing.Value['i']
3result = multiprocessing.Array['i', 4]
67square_sum.value = sum[result]
48square_sum = multiprocessing.Value['i']
67square_sum.value = sum[result]
25result = multiprocessing.Array['i', 4]
67square_sum.value = sum[result]
29result = multiprocessing.Array['i', 4]
3result = multiprocessing.Array['i', 4]
67square_sum.value = sum[result]
55square_sum = multiprocessing.Value['i']
67square_sum.value = sum[result]
57square_sum = multiprocessing.Value['i']
67square_sum.value = sum[result]
59square_sum = multiprocessing.Value['i']
30square_sum.value = sum[result]
Hãy để chúng tôi cố gắng hiểu đoạn mã trên
- Trước hết, chúng tôi tạo một đối tượng người quản lý bằng cách sử dụng.
31square_sum.value = sum[result]
Tất cả các dòng bên dưới với khối câu lệnh đều thuộc phạm vi của đối tượng người quản lý
- Sau đó, chúng tôi tạo một bản ghi danh sách trong bộ nhớ xử lý máy chủ bằng cách sử dụng.
32square_sum.value = sum[result]
Tương tự, bạn có thể tạo từ điển với tư cách là người quản lý. phương pháp chính tả
- Cuối cùng, chúng tôi tạo các quy trình p1 [để chèn bản ghi mới vào danh sách bản ghi] và p2 [để in bản ghi] và chạy chúng trong khi chuyển bản ghi dưới dạng một trong các đối số
Khái niệm về quy trình máy chủ được mô tả trong sơ đồ hiển thị bên dưới
- Trước hết, chúng tôi tạo một đối tượng người quản lý bằng cách sử dụng.
Giao tiếp giữa các tiến trình
Việc sử dụng hiệu quả nhiều quy trình thường yêu cầu một số giao tiếp giữa chúng, để có thể phân chia công việc và tổng hợp kết quả.
đa xử lý hỗ trợ hai loại kênh liên lạc giữa các quy trình.
- Xếp hàng
- Đường ống
- Hàng đợi. Một cách đơn giản để giao tiếp giữa tiến trình với đa xử lý là sử dụng Hàng đợi để truyền thông điệp qua lại. Bất kỳ đối tượng Python nào cũng có thể đi qua Hàng đợi.
Lưu ý. đa xử lý. Lớp hàng đợi gần như là một bản sao của hàng đợi. Xếp hàng.
Hãy xem xét chương trình ví dụ dưới đây.
1result = multiprocessing.Array['i', 4]
2result = multiprocessing.Array['i', 4]
3result = multiprocessing.Array['i', 4]
9result = multiprocessing.Array['i', 4]
64square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
4square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
_______01____072
1____563square_sum = multiprocessing.Value['i']
64square_sum.value = sum[result]
65square_sum.value = sum[result]
66square_sum.value = sum[result]
67square_sum.value = sum[result]
79square_sum = multiprocessing.Value['i']
69square_sum.value = sum[result]
50square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
9result = multiprocessing.Array['i', 4]
84square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
88square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
_______01____354____355
94square_sum = multiprocessing.Value['i']
394square_sum.value = sum[result]
1square_sum = multiprocessing.Value['i']
97square_sum = multiprocessing.Value['i']
98square_sum = multiprocessing.Value['i']
99square_sum = multiprocessing.Value['i']
_______567____354____5602
1____354____355square_sum = multiprocessing.Value['i']
606square_sum.value = sum[result]
394square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
61square_sum.value = sum[result]
62square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
6result = multiprocessing.Array['i', 4]
65square_sum.value = sum[result]
66square_sum.value = sum[result]
_______01____968
1square_sum = multiprocessing.Value['i']
0square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
2square_sum.value = sum[result]
3square_sum.value = sum[result]
4square_sum.value = sum[result]
5square_sum.value = sum[result]
4square_sum.value = sum[result]
7square_sum.value = sum[result]
4square_sum.value = sum[result]
9square_sum.value = sum[result]
10square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
1____5631square_sum = multiprocessing.Value['i']
1____5633square_sum = multiprocessing.Value['i']
6result = multiprocessing.Array['i', 4]
635square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
_______01____029
1square_sum = multiprocessing.Value['i']
15square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
17square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
19square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
646square_sum.value = sum[result]
1square_sum = multiprocessing.Value['i']
39square_sum = multiprocessing.Value['i']
6result = multiprocessing.Array['i', 4]
17square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
652square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
654square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
_______01____5657
1____225square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
29result = multiprocessing.Array['i', 4]
3result = multiprocessing.Array['i', 4]
1____5664square_sum = multiprocessing.Value['i']
_______01____057
_______01____059
33square_sum.value = sum[result]
Hãy để chúng tôi cố gắng hiểu đoạn mã trên từng bước
- Đầu tiên, chúng tôi tạo Hàng đợi đa xử lý bằng cách sử dụng.
34square_sum.value = sum[result]
- Sau đó, chúng tôi chuyển hàng đợi trống q đến hàm square_list thông qua quy trình p1. Các phần tử được chèn vào hàng đợi bằng phương thức put.
35square_sum.value = sum[result]
- Để in các phần tử hàng đợi, chúng tôi sử dụng phương thức get cho đến khi hàng đợi không trống.
36square_sum.value = sum[result]
Đưa ra dưới đây là một sơ đồ đơn giản mô tả các hoạt động trên hàng đợi
- Đầu tiên, chúng tôi tạo Hàng đợi đa xử lý bằng cách sử dụng.
- ống. Một đường ống chỉ có thể có hai điểm cuối. Do đó, nó được ưu tiên hơn hàng đợi khi chỉ yêu cầu giao tiếp hai chiều
mô-đun đa xử lý cung cấp hàm Pipe[] trả về một cặp đối tượng kết nối được kết nối bởi một đường ống. Hai đối tượng kết nối được trả về bởi Pipe[] đại diện cho hai đầu của đường ống. Mỗi đối tượng kết nối có các phương thức send[] và recv[] [trong số các phương thức khác].
Xét chương trình dưới đây.
1result = multiprocessing.Array['i', 4]
2result = multiprocessing.Array['i', 4]
3result = multiprocessing.Array['i', 4]
9result = multiprocessing.Array['i', 4]
673square_sum.value = sum[result]
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
1____5677square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
1____563square_sum = multiprocessing.Value['i']
682square_sum.value = sum[result]
65square_sum.value = sum[result]
684square_sum.value = sum[result]
_______567____5686
67square_sum.value = sum[result]
54____355square_sum.value = sum[result]
690square_sum.value = sum[result]
57square_sum.value = sum[result]
58square_sum.value = sum[result]
693square_sum.value = sum[result]
1____5695square_sum = multiprocessing.Value['i']
3result = multiprocessing.Array['i', 4]
9result = multiprocessing.Array['i', 4]
698square_sum.value = sum[result]
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
1____3502square_sum = multiprocessing.Value['i']
1____3504square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
2square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
97square_sum = multiprocessing.Value['i']
3square_sum.value = sum[result]
66square_sum.value = sum[result]
67square_sum.value = sum[result]
682square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
514square_sum.value = sum[result]
67square_sum.value = sum[result]
61square_sum.value = sum[result]
682square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
6result = multiprocessing.Array['i', 4]
520square_sum.value = sum[result]
66square_sum.value = sum[result]
522square_sum.value = sum[result]
523square_sum.value = sum[result]
67square_sum.value = sum[result]
54square_sum.value = sum[result]
55square_sum.value = sum[result]
527square_sum.value = sum[result]
57square_sum.value = sum[result]
58square_sum.value = sum[result]
693square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
61square_sum.value = sum[result]
62square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
6result = multiprocessing.Array['i', 4]
65square_sum.value = sum[result]
66square_sum.value = sum[result]
1____3539square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
541square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
2square_sum.value = sum[result]
544square_sum.value = sum[result]
4square_sum.value = sum[result]
546square_sum.value = sum[result]
4square_sum.value = sum[result]
548square_sum.value = sum[result]
4square_sum.value = sum[result]
520square_sum.value = sum[result]
10square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
_______01____3554
1____3556square_sum = multiprocessing.Value['i']
6result = multiprocessing.Array['i', 4]
558square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
_______01____029
1square_sum = multiprocessing.Value['i']
15square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
17square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
567square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
569square_sum.value = sum[result]
1square_sum = multiprocessing.Value['i']
39square_sum = multiprocessing.Value['i']
6result = multiprocessing.Array['i', 4]
17square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
575square_sum.value = sum[result]
6result = multiprocessing.Array['i', 4]
577square_sum.value = sum[result]
3result = multiprocessing.Array['i', 4]
1____3580square_sum = multiprocessing.Value['i']
1____225square_sum = multiprocessing.Value['i']
_______01____057
3result = multiprocessing.Array['i', 4]
1____3587square_sum = multiprocessing.Value['i']
1square_sum = multiprocessing.Value['i']
29result = multiprocessing.Array['i', 4]
_______01____059
37square_sum.value = sum[result]
Hãy để chúng tôi cố gắng hiểu đoạn mã trên
- Một đường ống được tạo đơn giản bằng cách sử dụng.
38square_sum.value = sum[result]
Hàm trả về hai đối tượng kết nối cho hai đầu của đường ống
- Tin nhắn được gửi từ đầu này sang đầu kia bằng phương thức gửi.
39square_sum.value = sum[result]
- Để nhận bất kỳ tin nhắn nào ở một đầu của đường ống, chúng tôi sử dụng phương thức recv.
0result = multiprocessing.Array['i', 4]
- Trong chương trình trên, chúng tôi gửi một danh sách các tin nhắn từ đầu này đến đầu kia. Ở đầu bên kia, chúng tôi đọc tin nhắn cho đến khi nhận được tin nhắn “END”
Hãy xem xét sơ đồ được đưa ra dưới đây cho thấy mối quan hệ giữa đường ống b/w và các quy trình
- Một đường ống được tạo đơn giản bằng cách sử dụng.
Ghi chú. Dữ liệu trong một đường ống có thể bị hỏng nếu hai quy trình [hoặc luồng] cố gắng đọc hoặc ghi vào cùng một đầu của đường ống cùng một lúc. Tất nhiên, không có nguy cơ tham nhũng từ các quy trình sử dụng các đầu khác nhau của đường ống cùng một lúc. Cũng lưu ý rằng Hàng đợi thực hiện đồng bộ hóa phù hợp giữa các quy trình, với chi phí phức tạp hơn. Do đó, hàng đợi được cho là luồng và xử lý an toàn
Tiếp theo
- Đồng bộ hóa và gộp các quy trình trong Python
Bài viết này được đóng góp bởi Nikhil Kumar. Nếu bạn thích GeeksforGeeks 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 write. chuyên viên máy tính. org hoặc gửi bài viết của bạn tới review-team@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