Python tạo chủ đề
Trong bài viết này, chúng ta sẽ thảo luận về cách tạo các luồng trong python sẽ chạy một hàm (có hoặc không có đối số) song song với luồng chính Show
Python cung cấp một mô-đun luồng để quản lý các luồng. Để sử dụng, chúng ta cần nhập mô-đun này i. e import threading Bây giờ mô-đun luồng của Python cung cấp một lớp Thread để tạo và quản lý các luồng. Lớp chủ đề cung cấp một hàm tạo trong đó chúng ta có thể chuyển một thực thể có thể gọi được i. e. hàm hoặc hàm thành viên, v.v. và các đối số mà hàm đó yêu cầu trong args i. e. ______1 Để tạo các luồng, chúng ta có thể tạo các đối tượng của lớp Chủ đề này bằng cách truyền hàm mà chúng ta muốn chạy trong luồng riêng biệt. Mỗi đối tượng của lớp Thread đại diện cho một luồng và chúng ta có thể điều khiển luồng đó bằng cách gọi hàm thành viên của đối tượng luồng này. Hãy tạo một luồng sử dụng lớp Thread bằng cách truyền một hàm có hoặc không có đối số Tạo một chủ đề với một chức năngGiả sử chúng ta có một chức năng in 5 dòng trong một vòng lặp và ngủ trong 1 giây sau khi in mỗi dòng i. e ''' This function will print 5 lines in a loop and sleeps for 1 second after printing a line. ''' def threadFunc(): for i in range(5): print('Hello from new Thread ') time.sleep(1) Khi được gọi, chức năng này sẽ hoàn thành sau khoảng 5 giây. quảng cáo Vì chức năng chính của chúng tôi chạy trong luồng chính, chúng tôi muốn tạo một luồng mới sẽ thực thi threadFunc() song song với luồng chính. # Create a Thread with a function without any arguments th = threading.Thread(target=threadFunc) Nó sẽ tạo đối tượng lớp Thread có thể chạy hàm được cung cấp trong đối số đích trong luồng song song, nhưng luồng chưa bắt đầu. Để bắt đầu luồng, chúng ta cần gọi hàm thành viên start() từ đối tượng luồng i. e. ______4 th. start() sẽ bắt đầu một luồng mới, luồng này sẽ thực thi hàm threadFunc() song song với luồng chính. Sau khi gọi hàm start() trên đối tượng luồng, điều khiển sẽ quay lại luồng Chính và luồng mới sẽ thực thi song song với luồng Chính. Vì vậy, cả hàm main() và threadFunc() sẽ chạy song song và in nhật ký song song trong khoảng 5 giây. Do đó, đầu ra của đoạn mã trên là, Hello from new Thread Hi from Main Thread Hello from new Thread Hi from Main Thread Hi from Main Thread Hello from new Thread Hello from new Thread Hi from Main Thread Hi from Main Thread Hello from new Thread Cuối cùng, luồng chính sẽ đợi luồng thứ thoát ra bằng cách gọi hàm join() trên đối tượng luồng. Cuộc gọi này đang bị chặn cho đến khi luồng được chỉ định bởi đối tượng thoát ra. Tại sao chủ đề chính được gọi là tham gia()?Nếu chúng ta chưa gọi hàm join() trong luồng chính, thì hàm main() sẽ không đợi luồng được trỏ bởi th để kết thúc. Vì vậy, nếu hàm main() kết thúc thì nó hoạt động trước, nó có thể thoát mà không cần luồng khác kết thúc. Do đó, gọi tham gia () trên đối tượng luồng sẽ giảm lỗi Ví dụ hoàn chỉnh như sau, import threading import time ''' This function will print 5 lines in a loop and sleeps for 1 second after printing a line. ''' def threadFunc(): for i in range(5): print('Hello from new Thread ') time.sleep(1) def main(): print('**** Create a Thread with a function without any arguments ****') # Create a Thread with a function without any arguments th = threading.Thread(target=threadFunc) # Start the thread th.start() # Print some messages on console for i in range(5): print('Hi from Main Thread') time.sleep(1) # Wait for thread to finish th.join() if __name__ == '__main__': main() Đầu ra. ______7 Tạo một Chủ đề từ một hàm có đối sốĐiều gì sẽ xảy ra nếu chúng ta có một hàm chấp nhận một vài đối số?. e ''' A Dummy function that accepts 2 arguments i.e. Filename and encryption type and sleeps for 5 seconds in a loop while printing few lines. This is to simulate a heavey function that takes 10 seconds to complete ''' def loadContents(fileName, encryptionType): print('Started loading contents from file : ', fileName) print('Encryption Type : ', encryptionType) for i in range(5): print('Loading .. ') time.sleep(1) print('Finished loading contents from file : ', fileName) Hàm này mô phỏng một hàm nặng chấp nhận hai đối số i. e. tên tệp và loại mã hóa, sau đó thực hiện một số nội dung mất khoảng 5 giây. Bây giờ để tạo một đối tượng luồng chạy hàm này trong luồng song song, chúng ta cần truyền các đối số của hàm dưới dạng tuple trong đối số args của hàm tạo lớp Thread i. e. ______9 Nó sẽ tạo một đối tượng luồng có thể chạy hàm đã truyền trong luồng mới song song với luồng chính. Cả hàm main() và hàm loadContents() sẽ chạy song song và cả hai sẽ in nhật ký song song. Do đó, đầu ra của đoạn mã trên là , class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)0 Một điểm quan trọng khác là nếu chúng ta có một hàm chấp nhận một đối số thì chúng ta cần truyền bộ dữ liệu vào args . class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)1 Complete example is as follows, class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)2 Output: class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)3 Điểm quan trọng về Đầu ra. Trong các ví dụ trên, cả luồng chính và luồng mới của chúng ta đều chạy song song và in thông báo trên bảng điều khiển song song. Do đó, thứ tự của các đầu ra có thể khác với các đầu ra ở trên vì bảng điều khiển là tài nguyên dùng chung được sử dụng song song bởi 2 luồng. Trong các bài viết sau, chúng tôi sẽ thảo luận về cách đồng bộ hóa một tài nguyên duy nhất giữa các luồng.
Hướng dẫn về Pandas -Tìm hiểu Phân tích dữ liệu với Python
Bạn đang muốn tạo dựng sự nghiệp trong Khoa học dữ liệu với Python?Khoa học dữ liệu là tương lai và tương lai là ở đây ngay bây giờ. Các nhà khoa học dữ liệu hiện là những chuyên gia được tìm kiếm nhiều nhất hiện nay. Để trở thành một Nhà khoa học dữ liệu giỏi hoặc để chuyển đổi nghề nghiệp trong Khoa học dữ liệu, người ta phải sở hữu bộ kỹ năng phù hợp. Chúng tôi đã tuyển chọn danh sách Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với Python. Các khóa học này sẽ dạy cho bạn các công cụ lập trình cho Khoa học dữ liệu như Pandas, NumPy, Matplotlib, Seaborn và cách sử dụng các thư viện này để triển khai các mô hình Máy học Kiểm tra Đánh giá chi tiết về Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với PythonHãy nhớ rằng, Khoa học dữ liệu đòi hỏi rất nhiều kiên nhẫn, bền bỉ và thực hành. Vì vậy, hãy bắt đầu học ngay hôm nay Chúng ta có thể tạo chủ đề bằng Python không?Phân luồng Python cho phép bạn chạy đồng thời các phần khác nhau của chương trình và có thể đơn giản hóa thiết kế của bạn . Nếu bạn đã có một số kinh nghiệm về Python và muốn tăng tốc chương trình của mình bằng các luồng, thì hướng dẫn này là dành cho bạn.
Làm thế nào một chủ đề có thể được tạo ra trong Python đưa ra ví dụ?Chúng tôi đã tạo một lớp con của lớp chủ đề. Sau đó, chúng tôi ghi đè chức năng __init__ của lớp chủ đề. Sau đó, chúng tôi ghi đè phương thức chạy để xác định hành vi của luồng. Phương thức start() bắt đầu một luồng Python
Việc tạo một chuỗi Python có đắt không?Lưu câu trả lời này. Hiển thị hoạt động trên bài đăng này. Tạo chuỗi tốn kém và ngăn xếp yêu cầu bộ nhớ. Đồng thời, nếu quy trình của bạn đang sử dụng nhiều luồng, thì việc chuyển đổi ngữ cảnh có thể làm giảm hiệu suất.
Python có tốt cho luồng không?Tóm lại, phân luồng trong Python cho phép tạo nhiều luồng 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. Phân luồng vẫn là một tùy chọn rất tốt khi chạy đồng thời nhiều tác vụ liên kết I/O . |