การเขียน Threading และ
Multiprocessing ด้วย Python
ก่อนจะลองทำตาม เราต้องติดตั้ง Python ลงในเครื่องก่อน สามารถ Download Python ได้ที่ลิงค์นี้ https://www.python.org/downloads/
หลังจากติดตั้ง IDE หรือ Text editor เลือกใช้ตามที่สะดวก ถ้า hardcore หน่อยก็สามารถใช้ notepad สร้างไฟล์ Python ขึ้นมาก็ได้
จากนั้นสร้างไฟล์ .py ขึ้นมา ใส่ code นี้ลงไปแล้ว ทดสอบรันดู
ขั้นแรกเราจะทำการ import library ที่ Python มีให้สำหรับ Threading และ Multiprocessing มาก่อนโดย library ทั้งสองตัวนี้เป็น library ที่ built-in
หลังจากนั้นเราสร้าง ฟังก์ชั่นขึ้นมาชื่อว่า func เป็นฟังก์ชั่นที่เก็บผลคูณของลิสต์ของตัวเลขที่เราสุ่มขึ้นมาเพื่อเป็นการจำลองการประมวลผลภายในโปรแกรม
ในส่วน Threading เราจะสร้าง Thread ใหม่ด้วย Class ชื่อ Thread และกำหนด Argument ของ Class นั้นโดยให้ Target เป็นฟังก์ชั่นที่ต้องทำให้ Thread นั้นทำงาน และ args เป็นค่าที่ต้องการส่งให้แก่ฟังก์ชั่นนั้น
ในส่วน Multiprocessing นั้นการจะสร้าง Process ขึ้นมาใหม่ใน Python จะล้อมากับการสร้าง Thread เลย ต่างเพียงแค่ชื่อ class เปลี่ยนเป็น Process แทน โดย Argument ของ Class นั้นจะอ้างอิงเหมือนกัน
Method start() คือการสั่งให้ Thread นั้นเริ่มทำงาน
ส่วน Method join() เป็นการบอกว่าให้ Programs รอ Thread หรือ Process นั้นประมวลผลเสร็จก่อนจึงจะปิด Programs หากไม่มี Programs จะปิดทันทีหลังจากที่เริ่มสร้าง Thread หรือ Process สำเร็จ
หากเราต้องการนำโค้ดนี้ไปประยุกต์ใช้ ก็เพียงแค่เปลี่ยนในส่วนของ func ให้เป็นส่วนที่เราต้องการให้มีการทำงานแบบ parallel และเปลี่ยน args เป็นค่าที่เราต้องการส่งให้การทำงานในแต่ล่ะ Thread หรือ Process
หวังว่าทางผู้อ่านจะนสามารถนำการใช้ Threading และ Multiprocessing ไปประยุกต์ใช้ใน Project Data Sci ที่ทำอยู่เพื่อเพิ่มประสิทธิภาพในการคำนวนหรือลดคอขวดในการทำงานได้
References
[1] https://blog.floydhub.com/multiprocessing-vs-threading-in-python-what-every-data-scientist-needs-to-know/
[2] https://gist.github.com/ThilinaRajapakse/4270386161f153d0b67c039ba8f2a490#file-multiprocessing-ipynb
[3] https://www.geeksforgeeks.org/multithreading-python-set-1/?ref=lbp
[4] https://zetcode.com/python/multiprocessing/