Tóm lược. trong hướng dẫn này, bạn sẽ học cách chạy mã song song bằng cách sử dụng mô-đun đa xử lý Python
Giới thiệu về đa xử lý Python
Nói chung, các chương trình xử lý hai loại nhiệm vụ
- Nhiệm vụ ràng buộc I/O. nếu một tác vụ thực hiện nhiều hoạt động đầu vào/đầu ra, thì nó được gọi là tác vụ giới hạn I/O. Các ví dụ điển hình về các tác vụ liên kết I/O là đọc từ tệp, ghi vào tệp, kết nối với cơ sở dữ liệu và tạo yêu cầu mạng. Đối với các tác vụ liên kết I/O, bạn có thể sử dụng đa luồng để tăng tốc chúng
- nhiệm vụ ràng buộc CPU. khi một tác vụ thực hiện nhiều thao tác sử dụng CPU, nó được gọi là tác vụ liên kết với CPU. Ví dụ: tính toán số, thay đổi kích thước hình ảnh và truyền phát video là các tác vụ liên quan đến CPU. Để tăng tốc chương trình với nhiều tác vụ liên quan đến CPU, bạn sử dụng đa xử lý
Đa xử lý cho phép hai hoặc nhiều bộ xử lý xử lý đồng thời hai hoặc nhiều phần khác nhau của chương trình. Trong Python, bạn sử dụng mô-đun
5 để triển khai đa xử lýCode language: Python [python]
It took 12.94 second[s] to finish
Ví dụ đa xử lý Python
Xem chương trình sau
Code language: Python [python]
import time def task[n=100_000_000]: while n: n -= 1 if __name__ == '__main__': start = time.perf_counter[] task[] task[] finish = time.perf_counter[] print[f'It took {finish-start: .2f} second[s] to finish']
đầu ra
Code language: Python [python]
It took 12.94 second[s] to finish
Làm thế nào nó hoạt động
Đầu tiên, xác định hàm ________ 06 có vòng lặp lớn từ 10 triệu thành 0. Hàm ________ 06 bị ràng buộc bởi CPU vì nó liên quan đến tính toán
def task[n=100_000_000]: while n: n -= 1
Code language: Python [python]
Thứ hai, gọi hàm
8 hai lần và ghi lại thời gian xử lýCode language: Python [python]
It took 12.94 second[s] to finish
Code language: Python [python]
if __name__ == '__main__': start = time.perf_counter[] task[] task[] finish = time.perf_counter[] print[f'It took {finish-start: .2f} second[s] to finish']
Trong máy tính của chúng tôi, phải mất 0. 78 giây để hoàn thành
Sử dụng mô-đun đa xử lý
Chương trình sau sử dụng mô-đun đa xử lý nhưng tốn ít thời gian hơn
________số 8đầu ra
Code language: Python [python]
It took 6.45 second[s] to finish
Làm thế nào nó hoạt động
Đầu tiên, nhập mô-đun đa xử lý
0Code language: Python [python]
import time def task[n=100_000_000]: while n: n -= 1 if __name__ == '__main__': start = time.perf_counter[] task[] task[] finish = time.perf_counter[] print[f'It took {finish-start: .2f} second[s] to finish']
Thứ hai, tạo hai quy trình và chuyển chức năng tác vụ cho mỗi quy trình
1Code language: Python [python]
import time def task[n=100_000_000]: while n: n -= 1 if __name__ == '__main__': start = time.perf_counter[] task[] task[] finish = time.perf_counter[] print[f'It took {finish-start: .2f} second[s] to finish']
Lưu ý rằng hàm tạo
9 trả về một đối tượngCode language: Python [python]
It took 12.94 second[s] to finish
0 mớiCode language: Python [python]
def task[n=100_000_000]: while n: n -= 1
Thứ ba, gọi phương thức
1 của đối tượngCode language: Python [python]
def task[n=100_000_000]: while n: n -= 1
0 để bắt đầu quá trìnhCode language: Python [python]
def task[n=100_000_000]: while n: n -= 1
6Code language: Python [python]
import time def task[n=100_000_000]: while n: n -= 1 if __name__ == '__main__': start = time.perf_counter[] task[] task[] finish = time.perf_counter[] print[f'It took {finish-start: .2f} second[s] to finish']
Cuối cùng, đợi quá trình hoàn tất bằng cách gọi phương thức
3Code language: Python [python]
def task[n=100_000_000]: while n: n -= 1
8
import time def task[n=100_000_000]: while n: n -= 1 if __name__ == '__main__': start = time.perf_counter[] task[] task[] finish = time.perf_counter[] print[f'It took {finish-start: .2f} second[s] to finish']
Code language: Python [python]
Ví dụ thực tế đa xử lý Python
Chúng tôi sẽ sử dụng mô-đun đa xử lý để thay đổi kích thước hình ảnh có độ phân giải cao
Đầu tiên, cài đặt thư viện
4 để xử lý ảnhCode language: Python [python]
def task[n=100_000_000]: while n: n -= 1
0Code language: Python [python]
It took 12.94 second[s] to finish
Thứ hai, phát triển chương trình tạo hình thu nhỏ của ảnh trong thư mục
5 và lưu chúng vào thư mụcCode language: Python [python]
def task[n=100_000_000]: while n: n -= 1
6Code language: Python [python]
def task[n=100_000_000]: while n: n -= 1
1Code language: Python [python]
It took 12.94 second[s] to finish
Trong máy tính của chúng tôi, mất khoảng 1. 28s để hoàn thành
2Code language: Python [python]
It took 12.94 second[s] to finish
Thứ ba, sửa đổi chương trình để sử dụng đa xử lý. Mỗi quá trình sẽ tạo một hình thu nhỏ cho một hình ảnh