Một luồng là một đơn vị thực hiện trên lập trình đồng thời. Đa luồng là kỹ thuật cho phép CPU thực thi đồng thời nhiều tác vụ của một tiến trình. Các luồng này có thể thực thi riêng lẻ trong khi chia sẻ tài nguyên quy trình của chúng
Quy trình là gì?
Một quy trình về cơ bản là chương trình đang thực thi. Khi bạn khởi động một ứng dụng trong máy tính của mình [chẳng hạn như trình duyệt hoặc trình soạn thảo văn bản], hệ điều hành sẽ tạo một quy trình
Đa luồng trong Python là gì?
Đa luồng trong lập trình Python là một kỹ thuật nổi tiếng trong đó nhiều luồng trong một quy trình chia sẻ không gian dữ liệu của chúng với luồng chính, giúp chia sẻ và liên lạc thông tin trong các luồng dễ dàng và hiệu quả. Các luồng nhẹ hơn các quy trình. Nhiều luồng có thể thực thi riêng lẻ trong khi chia sẻ tài nguyên quy trình của chúng. Mục đích của đa luồng là chạy nhiều tác vụ và các ô chức năng cùng một lúc
Trong hướng dẫn này, bạn sẽ học,
Đa xử lý là gì?
Đa xử lý cho phép bạn chạy đồng thời nhiều quy trình không liên quan. Các quy trình này không chia sẻ tài nguyên của chúng và giao tiếp thông qua IPC
Đa luồng Python vs Đa xử lý
Để hiểu các quy trình và luồng, hãy xem xét tình huống này. Một. exe trên máy tính của bạn là một chương trình. Khi bạn mở nó, hệ điều hành sẽ tải nó vào bộ nhớ và CPU sẽ thực thi nó. Thể hiện của chương trình hiện đang chạy được gọi là tiến trình
Mỗi quy trình sẽ có 2 thành phần cơ bản
- Mật mã
- Dữ liệu
Giờ đây, một quy trình có thể chứa một hoặc nhiều phần con được gọi là luồng. Điều này phụ thuộc vào kiến trúc hệ điều hành,. Bạn có thể nghĩ về một luồng như một phần của quy trình có thể được thực thi riêng bởi hệ điều hành
Nói cách khác, đó là một luồng lệnh mà HĐH có thể chạy độc lập. Các luồng trong một quy trình chia sẻ dữ liệu của quy trình đó và được thiết kế để hoạt động cùng nhau nhằm tạo điều kiện thuận lợi cho xử lý song song
Tại sao nên sử dụng Đa luồng?
Đa luồng cho phép bạn chia nhỏ ứng dụng thành nhiều tác vụ phụ và chạy các tác vụ này đồng thời. Nếu bạn sử dụng đa luồng đúng cách, thì tốc độ, hiệu suất và kết xuất ứng dụng của bạn đều có thể được cải thiện
Đa luồng Python
Python hỗ trợ các cấu trúc cho cả đa xử lý cũng như đa luồng. Trong hướng dẫn này, bạn sẽ chủ yếu tập trung vào triển khai các ứng dụng đa luồng với python. Có hai mô-đun chính có thể được sử dụng để xử lý các luồng trong Python
- Mô-đun luồng và
- mô-đun luồng
Tuy nhiên, trong python, còn có một thứ gọi là khóa phiên dịch toàn cầu [GIL]. Nó không cho phép tăng hiệu suất nhiều và thậm chí có thể làm giảm hiệu suất của một số ứng dụng đa luồng. Bạn sẽ tìm hiểu tất cả về nó trong các phần sắp tới của hướng dẫn này
Các mô-đun Thread và Threading
Hai mô-đun mà bạn sẽ tìm hiểu trong hướng dẫn này là mô-đun luồng và mô-đun phân luồng
Tuy nhiên, mô-đun luồng từ lâu đã không được dùng nữa. Bắt đầu với Python 3, nó đã được chỉ định là lỗi thời và chỉ có thể truy cập dưới dạng __thread để tương thích ngược
Bạn nên sử dụng mô-đun luồng cấp cao hơn cho các ứng dụng mà bạn định triển khai. Mô-đun chủ đề chỉ được đề cập ở đây cho mục đích giáo dục
Mô-đun chủ đề
Cú pháp để tạo một chủ đề mới bằng mô-đun này như sau
thread.start_new_thread[function_name, arguments]
Được rồi, bây giờ bạn đã nắm được lý thuyết cơ bản để bắt đầu viết mã. Vì vậy, hãy mở IDLE hoặc notepad của bạn và nhập nội dung sau
import time import _thread def thread_test[name, wait]: i = 0 while i