การใช้งาน Multiprocessing และ Threading ใน python

จากบทความที่แล้ว เราได้อธิบายนิยามที่เกี่ยวข้องกับ Threading และ Multiprocessing ไปแล้ว ในบทความนี้เราจะมาแสดงตัวอย่างการเขียน Threading และ Multiprocessing ด้วย Python กัน
3 พฤศจิกายน ค.ศ. 2021 โดย
Administrator

การเขียน Threading และ

Multiprocessing ด้วย Python 

​สำหรับใครที่ยังไม่รู้จักว่า Multiprocessing และ Threading คืออะไร สามารถกลับไปอ่านบทความนี้ก่อนได้ 👉🏻 Multiprocessing และ Threading ใน Python คืออะไร และทำไมคนทำงานในสาย Data ถึงควรรู้จัก 


​ก่อนจะลองทำตาม เราต้องติดตั้ง Python ลงในเครื่องก่อน สามารถ Download Python ได้ที่ลิงค์นี้ คลิก!


​หลังจากติดตั้ง IDE หรือ Text editor เลือกใช้ตามที่สะดวก ถ้า hardcore หน่อยก็สามารถใช้ notepad สร้างไฟล์ Python ขึ้นมาก็ได้

​จากนั้นสร้างไฟล์ .py ขึ้นมา ใส่ code นี้ลงไปแล้ว ทดสอบรันดู

​หลังจากติดตั้ง IDE หรือ Text editor เลือกใช้ตามที่สะดวก ถ้า hardcore หน่อยก็สามารถใช้ notepad สร้างไฟล์ Python ขึ้นมา

​ขั้นแรกเราจะทำการ 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/

Administrator 3 พฤศจิกายน ค.ศ. 2021
แชร์โพสต์นี้
แท็ก