Bộ sưu tập đồng thời Python
Để triển khai đồng thời của riêng bạn bằng cách sử dụng trình tạo, trước tiên bạn cần có hiểu biết cơ bản về các hàm của trình tạo và câu lệnh Show Để minh họa ý tưởng này, hãy xem xét hai hàm tạo sau đây bằng cách sử dụng một
Các chức năng này có thể trông hơi buồn cười khi sử dụng chính
Trong đoạn mã này, lớp 0 chạy một tập hợp các trình tạo theo kiểu vòng tròn—mỗi trình tạo chạy cho đến khi chúng gặp câu lệnh yield . Đối với mẫu, đầu ra sẽ như sauT-minus 10 T-minus 5 Counting up 0 T-minus 9 T-minus 4 Counting up 1 T-minus 8 T-minus 3 Counting up 2 T-minus 7 T-minus 2 ... Tại thời điểm này, về cơ bản, bạn đã triển khai phần lõi nhỏ của một “hệ điều hành” nếu bạn muốn. Các hàm tạo là các tác vụ và câu lệnh Trong thực tế, có lẽ bạn sẽ không sử dụng trình tạo để triển khai đồng thời cho một thứ đơn giản như được hiển thị. Thay vào đó, bạn có thể sử dụng các trình tạo để thay thế việc sử dụng các luồng khi triển khai các tác nhân (xem Xác định tác vụ của tác nhân) hoặc máy chủ mạng Đoạn mã sau minh họa việc sử dụng trình tạo để triển khai phiên bản diễn viên không có luồng
Việc thực thi đoạn mã này có thể cần nghiên cứu một chút, nhưng điều quan trọng là hàng đợi các thư đang chờ xử lý. Về cơ bản, bộ lập lịch chạy miễn là có tin nhắn cần gửi. Một tính năng đáng chú ý là trình tạo 2 gửi tin nhắn cho chính nó và kết thúc trong một chu kỳ đệ quy không bị ràng buộc bởi giới hạn đệ quy của Python Dưới đây là một ví dụ nâng cao cho thấy việc sử dụng trình tạo để triển khai ứng dụng mạng đồng thời
Mã này chắc chắn sẽ yêu cầu một lượng nghiên cứu cẩn thận nhất định. Tuy nhiên, về cơ bản nó đang triển khai một hệ điều hành nhỏ. Có một hàng đợi các tác vụ đã sẵn sàng để chạy và có các khu vực chờ cho các tác vụ đang ngủ cho I/O. Phần lớn bộ lập lịch liên quan đến việc di chuyển các tác vụ giữa hàng đợi sẵn sàng và khu vực chờ I/O Python có tốt cho lập trình đồng thời không?Python cung cấp cơ chế cho cả đồng thời và song song , mỗi cơ chế có cú pháp và trường hợp sử dụng riêng. Python có hai cơ chế khác nhau để triển khai đồng thời, mặc dù chúng chia sẻ nhiều thành phần chung. Đây là luồng và coroutines hoặc không đồng bộ.
Có bao nhiêu luồng có thể chạy đồng thời Python?Nói chung, Python chỉ sử dụng một luồng để thực thi tập hợp các câu lệnh đã viết. Điều này có nghĩa là trong python, chỉ có một luồng sẽ được thực thi tại một thời điểm.
Các luồng Python có đồng thời không?Cả đa luồng và đa xử lý đều cho phép mã Python chạy đồng thời . Chỉ đa xử lý mới cho phép mã của bạn thực sự song song.
Python có thể chạy nhiều luồng cùng một lúc không?Tóm lại, phân luồng trong Python cho phép nhiều luồng được tạo trong một quy trình duy nhất, nhưng do GIL, không có luồng nào chạy cùng một lúc. Threading is still a very good option when it comes to running multiple I/O bound tasks concurrently. |