Đa luồng trong Python

 Bài viết này trình bày những kiến ​​thức cơ bản về đa luồng trong ngôn ngữ lập trình Python. Cũng giống như đa xử lý, đa luồng là một cách để đạt được đa nhiệm. Trong đa luồng, khái niệm luồng được sử dụng. Đầu tiên chúng ta hãy tìm hiểu khái niệm về luồng trong kiến ​​trúc máy tính.

Trong máy tính, quá trình này là một phiên bản của một chương trình máy tính đang được thực thi. Bất kỳ quy trình nào cũng có 3 thành phần cơ bản:

Dữ liệu liên quan mà chương trình cần (biến, không gian làm việc (work space), bộ đệm (buffers), v.v.

Bối cảnh thực thi của chương trình (Trạng thái của quá trình)

Một luồng là một thực thể trong một quy trình có thể được lên lịch để thực thi. Ngoài ra, nó là đơn vị xử lý nhỏ nhất có thể được thực hiện trong một hệ điều hành (Hệ điều hành).




Trong Python, mô-đun phân luồng cung cấp một API rất đơn giản và trực quan để tạo nhiều luồng trong một chương trình.

Chúng ta hãy xem xét một ví dụ đơn giản bằng cách sử dụng mô-đun phân luồng:

# Python program to illustrate the concept
# of threading
# importing the threading module
import threading
  
def print_cube(num):
    """
    function to print cube of given num
    """
    print("Cube: {}".format(num * num * num))
  
def print_square(num):
    """
    function to print square of given num
    """
    print("Square: {}".format(num * num))
  
if __name__ == "__main__":
    # creating thread
    t1 = threading.Thread(target=print_square, args=(10,))
    t2 = threading.Thread(target=print_cube, args=(10,))
  
    # starting thread 1
    t1.start()
    # starting thread 2
    t2.start()
  
    # wait until thread 1 is completely executed
    t1.join()
    # wait until thread 2 is completely executed
    t2.join()
  
    # both threads completely executed
    print("Done!")



Để nhập mô-đun phân luồng

import threading

Để tạo một luồng mới, chúng ta tạo một đối tượng của lớp Thread. Nó có các đối số sau:

target: hàm được thực thi theo luồng

args: các đối số được truyền cho hàm đích

if __name__ == "__main__":
    # creating thread
    t1 = threading.Thread(target=print_square, args=(10,))
    t2 = threading.Thread(target=print_cube, args=(10,))

Để bắt đầu một luồng, chúng ta sử dụng phương thức start của lớp Thread.

 # starting thread 1
    t1.start()
    # starting thread 2
    t2.start()

Khi các luồng bắt đầu, chương trình hiện tại (bạn có thể coi nó như một luồng chính) cũng tiếp tục thực thi. Để dừng thực hiện chương trình hiện tại cho đến khi một luồng hoàn tất, chúng tôi sử dụng phương thức nối.

  # wait until thread 1 is completely executed
    t1.join()
    # wait until thread 2 is completely executed
    t2.join()

Kết quả là, chương trình hiện tại đầu tiên sẽ đợi hoàn thành t1 và sau đó là t2. Sau khi kết thúc, các câu lệnh còn lại của chương trình hiện tại sẽ được thực thi.

  # both threads completely executed
    print("Done!")


output:

Square: 100
Cube: 1000
Done!

Nhận xét

Bài đăng phổ biến từ blog này

Thương mại hoá y tế

Các IDE hỗ trợ lập trình viên Python

CÁCH XỬ LÝ FILE trong Python