Hôm nay, là một trong những ngôn ngữ lập trình được yêu thích nhất trên toàn thế giới. Kể từ khi ra đời vào những năm 1990, nó đã thu hút được một lượng lớn người theo dõi và những người đam mê cũng như lập trình viên làm việc hàng ngày để cải thiện ngôn ngữ lập trình này. Trong số nhiều tính năng được tích hợp sẵn trong hệ sinh thái Python, một trong những tính năng nổi bật nhất là Threading. Vì vậy, trong bài viết này, chúng ta sẽ nói tất cả về Threading trong Python, cách bạn có thể sử dụng nó cùng với những ưu và nhược điểm của nó.
Các gợi ý sau sẽ được đề cập trong bài viết này,
- Luồng trong Python là gì?
- Bắt đầu một chuỗi bằng Python
- Chủ đề Daemon là gì?
- Làm việc với nhiều chủ đề
Phân luồng bằng Python
Luồng trong Python là gì?
Một luồng trong Python có thể được định nghĩa đơn giản là một luồng thực thi riêng biệt. Điều này đơn giản có nghĩa là trong chương trình của bạn, hai tiến trình khác nhau sẽ được thực thi cùng một lúc. Một khía cạnh thú vị của phân luồng trong Python là thực tế là, sau phiên bản 3, nhiều luồng trong Python không được thực thi cùng một lúc, mà chúng chỉ xuất hiện.
Mặc dù thật là một cảm giác tuyệt vời khi chạy hai quy trình khác nhau cùng một lúc, nhưng người ta cần hiểu rằng phiên bản hiện tại của Python 3 trở lên được mã hóa theo cách như vậy, chỉ có thể chạy tiến trình tại bất kỳ thời điểm nào. Tuy nhiên, nếu bạn cần hai hoặc nhiều quy trình cùng lúc trong CPython, bạn cũng cần phải viết một số mã của mình bằng các ngôn ngữ khác, chẳng hạn như C, C ++ và Java, sau đó chạy chúng thông qua đa luồng trong Python.
Một trong những lợi thế nổi tiếng nhất của phân luồng trong Python là khả năng mang lại sự rõ ràng cho thiết kế.
Trước đó, chúng ta có một số ý tưởng về Luồng trong Python, hãy để chúng tôi hiểu cách bắt đầu một luồng,
Bắt đầu một chuỗi bằng Python
Bây giờ bạn đã quen với định nghĩa của một chuỗi trong Python, chúng ta hãy xem một ví dụ về cách bạn có thể tạo chuỗi của riêng mình trong Python. Để tạo một luồng bằng Python, trước tiên bạn cần nhập thư viện luồng và sau đó hướng dẫn nó bắt đầu () như trong ví dụ dưới đây:
nhập ghi nhật ký nhập luồng thời gian nhập def thread_ Chức năng (tên): logging.info ('Chủ đề% s: bắt đầu', tên) time.sleep (2) logging.info ('Chủ đề% s: kết thúc', tên) if __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') logging.info ( 'Main & ampampampnbsp & ampampampnbsp: trước khi tạo luồng') x = threading.Thread (target = thread_ functions, args = (1,)) logging.info ('Main & ampampampnbsp & ampampampnbsp: trước khi chạy luồng') x.start () logging.info ('Main & ampampampnbsp & ampampampnbsp: đợi chuỗi kết thúc ') # x.join () logging.info (' Main & ampampampnbsp & ampampampnbsp: all done ')
Đầu ra
Khi chạy một luồng bằng Python, bạn chuyển nó dưới dạng một hàm chứa danh sách các đối số mà nó cần để thực thi. Trong ví dụ được chia sẻ ở trên, bạn đang hướng dẫn Python chạy luồng, thread_ functions () và chuyển nó tới 1 làm đối số.
Khi bạn chạy chương trình trên, kết quả sẽ giống như thế này.
trình lặp làm gì trong java
Phần tiếp theo của bài viết này về 'Luồng trong Python', hãy để chúng ta xem các luồng daemon là gì,
Chủ đề Daemon là gì?
Theo thuật ngữ kỹ thuật, daemon có thể được định nghĩa là một tiến trình chủ yếu chạy ở chế độ nền. Tuy nhiên, trong Python, một luồng daemon có một ý nghĩa rất cụ thể. Trong Python, một luồng daemon sẽ tắt ngay khi chương trình thoát ra, mặc dù trong các ngôn ngữ lập trình khác, nó sẽ tiếp tục chạy trong nền. Nếu trong một chương trình nhất định, một tiểu trình không được lập trình là một tiểu trình daemon, thì trình thông dịch sẽ đợi nó kết thúc hoạt động và sau đó chỉ tắt trình thông dịch.
Để hiểu rõ hơn về khái niệm này, hãy xem ví dụ trên. Ở dòng cuối cùng thứ hai, chương trình đợi một vài giây sau khi hoàn thành tất cả các tác vụ của nó. Điều này là do nó đang đợi luồng không phải daemonic kết thúc hoạt động và sau đó thoát khỏi giao diện. Khi luồng kết thúc hoạt động của nó, thì chỉ chương trình mới thoát.
Bây giờ chúng ta hãy sửa đổi chương trình trên và xem điều gì sẽ xảy ra, nếu chúng ta chèn một chuỗi daemon vào mã.
Mã mới: x = threading.Thread (target = thread_ functions, args = (1,), daemon = True)
Khi bạn chạy chương trình trên với các sửa đổi được thực hiện, nó sẽ trông giống như thế này.
Sự khác biệt giữa hai đầu ra này là dòng cuối cùng bị thiếu so với dòng mới nhất. Luồng_ Chức năng () không có cơ hội hoàn thành, vì chúng tôi đã chèn một luồng daemon và ngay khi kết thúc, nó sẽ thoát khỏi chương trình.
mối quan hệ isa và hasa trong java
Tham gia một chuỗi
Bây giờ bạn đã tìm hiểu về khái niệm tạo một chuỗi trong Python, cùng với khái niệm về một chuỗi daemonic, hãy cùng chúng tôi khám phá cách bạn có thể nối các chuỗi trong Python.
Bằng cách sử dụng hàm join () trong Python, bạn có thể nối hai luồng khác nhau và cũng hướng dẫn một luồng chờ luồng kia cho đến khi nó hoàn thành việc thực thi. Tính năng này thường sẽ hữu ích khi bạn viết mã các ứng dụng lớn và bạn cần tất cả các quy trình được thực thi theo một thứ tự cụ thể
Phần cuối cùng của bài viết này về 'Phân luồng trong Python' sẽ cho bạn thấy nhiều Chủ đề đang hoạt động,
Làm việc với nhiều chủ đề
Trong các ví dụ trên, chúng tôi đã nói về cách bạn có thể làm việc với hai luồng cùng một lúc. Nhưng nếu trong một tình huống nào đó, bạn cần làm việc với nhiều luồng cùng một lúc. Để hiểu rõ hơn về tình huống, hãy xem ví dụ bên dưới.
nhập ghi nhật ký nhập luồng thời gian nhập def thread_ Chức năng (tên): logging.info ('Chủ đề% s: bắt đầu', tên) time.sleep (2) logging.info ('Chủ đề% s: kết thúc', tên) if __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') thread = list ( ) cho chỉ mục trong phạm vi (3): logging.info ('Main & ampampampnbsp & ampampampnbsp: tạo và bắt đầu chủ đề% d.', index) x = threading.Thread (target = thread_ function, args = (index,)) thread.append (x ) x.start () cho chỉ mục, chuỗi trong liệt kê (chủ đề): logging.info ('Main & ampampampnbsp & ampampampnbsp: trước khi tham gia chủ đề% d.', index) thread.join () logging.info ('Main & ampampampnbsp & ampampampnbsp: thread% d xong ', chỉ mục)
Đầu ra
Trong chương trình trên, chúng ta đã thực hiện theo cùng một quy trình nhập thư viện luồng, bắt đầu luồng, tạo nhiều luồng và sau đó sử dụng hàm join () để kết hợp tất cả lại với nhau và được thực thi theo một thứ tự cụ thể.
Khi bạn chạy chương trình trên, kết quả sẽ như thế này.
Phần kết luận
Nó là một trong những tính năng tiện dụng nhất của Python. Bằng cách sử dụng nó đúng cách, bạn có thể làm cho toàn bộ quá trình viết mã của mình trở nên dễ dàng và hiệu quả hơn nhiều. Từ bài viết trên, chúng tôi hy vọng rằng bạn đã học được những kiến thức cơ bản về phân luồng và sẽ tiếp tục sử dụng nó trong lập trình hàng ngày của bạn.
Vì vậy, đây là nó guys Tôi hy vọng bạn thích bài viết này.
Để có được kiến thức chuyên sâu về Python cùng với các ứng dụng khác nhau của nó, bạn có thể để được đào tạo trực tuyến trực tiếp với hỗ trợ 24/7 và quyền truy cập trọn đời.
Có một câu hỏi cho chúng tôi? Đề cập đến họ trong phần bình luận của bài viết này và chúng tôi sẽ liên hệ lại với bạn.