Bạn dùng máy tính hàng ngày, mở hàng ngàn trang web khác nhau, cùng một cơ số đếm không xuể các ứng dụng nghe nhạc, xem phim, game ở bên ngoài, bạn có tự hỏi vì sao máy tính có thể cân nhắc hết việc đâu. . Nhưng thực tế ảo diệu hơn thế nhiều, hóa ra, trong một đơn vị thời gian (nano giây), chỉ có một chương trình (tiến trình) được chạy. Và trong chương trình đó, chia lại thành nhiều luồng (luồng) con, thực thi cùng một lúc (đa luồng, ít nhất là trong thời điểm hiện tại), tạo cho người dùng cảm giác chương trình đang chạy nhanh hơn. Nhờ khả năng xử lý các nhiệm vụ có thể coi như đồng thời (concurrency), chương trình có thể đáp ứng tốt cho người dùng khi đang bận rộn với công việc khác. Và đó chính là ý tưởng cơ bản của đa luồng 1. Luồng (chỉ) là gì ?
Đây là nhưng kiến thức trung phát ra từ máy tính nói chung, đến các ngôn ngữ lập trình nói riêng thì những khái niệm này cũng tương tự như vậy 2. Đa luồng (Đa luồng) là gìMột chương trình đa luồng bao gồm hai hoặc nhiều phần có thể chạy đồng thời và mỗi phần có thể xử lý các tác vụ khác nhau tại cùng một thời điểm, để sử dụng tốt nhất các nguồn có sẵn, đặc biệt khi máy tính của bạn Python cung cấp Mô-đun luồng và Mô-đun luồng để bạn có thể bắt đầu một luồng mới cũng như một số tác vụ khác trong khi thiết lập trình đa luồng. Mỗi chủ đề đều có vòng đời chung là bắt đầu, chạy và kết thúc. Một Chủ đề có thể bị ngắt (ngắt), hoặc tạm thời bị dừng (ngủ) trong khi các Chủ đề khác đang chạy – được gọi là năng suất Một ví dụ đơn giản chỉ sử dụng một luồng, có tham số truyền. To run thread, ta used method start(). Mục tiêu sẽ là chức năng myThread, là nhiệm vụ mà luồng phải hoàn thànhDư. This is a process program running normal
Còn đây là chương trình chạy đa luồng
có thể thấy các luồng chạy bài hát đồng thời với nhau, không cần chạy các lần như tuần tự như quá trình nữa , với luồng 1 chạy với độ trễ là 2s và với luồng 2 là 3s. Nếu chạy process thì tài nguyên có thể khác nhau,cấu trúc khác nhau, kết quả khác nhau và hoạt động theo tuần tự , còn đa luồng thì các luồng có thể cấu trúc giống nhau , tài nguyên sử dụng ít hơn
kết quả Mặc dù module threading rất hiệu quả với multi-stream tầm thấp nhưng khi so sánh với module threading thì nó có nhiều điểm hạn chế. Phần tiếp theo giới thiệu về Threading Module Module Threading cung cấp nhiều hỗ trợ mạnh mẽ và mức độ cao hơn cho các Thread trong khi so sánh với Thread Module ở trên. Ngoài các phương thức có trong thread Module, thì threading Module còn bổ sung thêm một số phương thức khác, đó là
Bên cạnh đó, phân luồng Module có lớp Chủ đề để phát triển đa luồng. This class has the following method
Có một số câu hỏi về việc nếu các luồng được giao việc và chạy như vậy thì muốn dừng các luồng lại thì phải làm sao. That is used daemon thread. Chủ đề daemon thường được sử dụng khi không còn cách đơn giản nào có thể dừng chủ đề này (ví dụ như vòng lặp nguyên bản), hoặc ngắt giữa chủ đề chính xác mà không làm ảnh hưởng đến dữ liệu. Ta có thể bắt một luồng đang chạy trong chế độ daemon bằng cách sử dụng phương thức setDaemon(True) 3. Đồng bộ hóa các Chủ đề trong PythonTrong khi thiết lập trình đa luồng, các luồng chia sẻ tài nguyên chung của tiến trình, vì vậy có những thời điểm nhiều luồng sẽ đồng thời thay đổi dữ liệu chung. Do đó, ta cần những cơ chế để đảm bảo rằng, tại một thời điểm chỉ có duy nhất một luồng được phép truy cập vào dữ liệu chung, nếu các luồng khác muốn truy cập vào đoạn dữ liệu này thì cần phải chờ chủ đề Python cung cấp Mô-đun phân luồng, trong đó bao gồm một kỹ thuật khóa cho phép bạn đồng bộ hóa các Chủ đề một cách dễ dàng. Một khóa mới được tạo theo cách gọi Lock() Phương thức thu nhận (chặn) của khóa đối tượng mới này được sử dụng để ép các Chủ đề chạy một cách đồng bộ. Tham số chặn tùy chọn cho bạn khả năng điều khiển để xem một chủ đề cần chờ đợi để đạt được khóa hoặc không Nếu tham số chặn được thiết lập là 0, tức là Chủ đề ngay lập tức trả về giá trị 0 nếu không bị khóa và trả về giá trị 1 nếu bị khóa. Nếu chặn được thiết lập là 1, thì Chủ đề cần đợi cho đến khi khóa được giải nén Phương thức giải phóng () của khóa đối tượng được sử dụng để giải nén khóa khi nó không cần thiết nữa 4. Ứng dụng đa luồngĐa luồng có rất công dụng vô cùng hữu ích thích hợp cho những nhiệm vụ chạy tàu ngầm không cần quan tâm chính xác thời gian hoàn thành, nghe có vẻ giống cronjob nhỉ =)) nhưng điểm đặc biệt nhất của nó vẫn là chạy song song . Ví dụ dự án của mình có nhiệm vụ bao gồm nhiều ưu đãi , người dùng muốn lưu ưu đãi đó để sử dụng lần sau thì cần ghi nhật ký 2 sự kiện bao gồm xem nhật ký và lưu nhật ký |