Skip to content
Siamcoder

Python multi-threading

python1 min read

Picture of cable, fiber

Multi-threading คือเทคนิคในการทำงานแบบพร้อมกันของหลายสายการทำงาน (threads) ในโปรแกรมเดียวกัน ซึ่งสามารถช่วยเพิ่มประสิทธิภาพและความเร็วในการประมวลผลงานที่มีลักษณะที่สามารถแบ่งออกเป็นงานย่อยๆ ได้

ในภาษา Python เราสามารถใช้งาน Multi-threading ได้โดยใช้โมดูล threading ที่มาพร้อมกับภาษา Python ตั้งแต่เวอร์ชัน 2.x เป็นต้นมา โดยมีขั้นตอนการใช้งานพื้นฐานดังนี้:

  • นิยามฟังก์ชันหรืองานที่ต้องการให้แต่ละสายการทำงาน (thread) ทำงาน
import threading
def print_numbers():
for i in range(1, 6):
print(i)
def print_letters():
for char in "ABCDE":
print(char)

ในตัวอย่างนี้เรากำหนดฟังก์ชัน print_numbers() และ print_letters() เพื่อแสดงตัวเลข 1-5 และตัวอักษร A-E ตามลำดับ

  • สร้างสายการทำงาน (thread) โดยใช้คลาส Thread จากโมดูล threading
thread1 = threading.Thread(target=print_numbers)
thread2 = threading.Thread(target=print_letters)

ในตัวอย่างนี้เราสร้างสายการทำงาน thread1 และ thread2 โดยกำหนดให้แต่ละสายการทำงานทำงานกับฟังก์ชันที่เรากำหนดไว้

  • เริ่มทำงานของสายการทำงาน
thread1.start()
thread2.start()

โดยเรียกใช้เมธอด start() เพื่อเริ่มการทำงานของแต่ละสายการทำงาน

  • รอให้สิ้นสุดการทำงานของสายการทำงาน
thread1.join()
thread2.join()

เรียกใช้เมธอด join() เพื่อรอให้แต่ละสายการทำงานเสร็จสิ้นการทำงานก่อนที่โปรแกรมจะสิ้นสุดการทำงาน

  • เมื่อทุกสายการทำงานเสร็จสิ้น โปรแกรมจะสิ้นสุดการทำงาน

ในตัวอย่างข้างต้น เราสร้างสายการทำงานสองสาย ซึ่งแต่ละสายมีงานที่ต้องทำ คือแสดงตัวเลข 1-5 และตัวอักษร A-E โดยทำงานพร้อมกัน และเมื่อสิ้นสุดการทำงานของสายการทำงานทั้งสอง เราจะสิ้นสุดการทำงานของโปรแกรม

Multi-threading เป็นเทคนิคที่มีประโยชน์ในกรณีที่มีงานที่สามารถทำงานพร้อมกันได้โดยไม่ต้องรอให้งานก่อนหน้าเสร็จสิ้น ซึ่งช่วยเพิ่มประสิทธิภาพและความเร็วในการประมวลผลข้อมูลในโปรแกรม Python ได้อย่างมาก