การใช้งาน Multiprocessing และ Threading ใน python
จากบทความที่แล้ว เราได้อธิบายนิยามที่เกี่ยวข้องกับ Threading และ Multiprocessing ไปแล้ว ในบทความนี้เราจะมาแสดงตัวอย่างการเขียน Threading และ Multiprocessing ด้วย Python กัน
29 October, 2021 by
การใช้งาน Multiprocessing และ Threading ใน python
Jula Jiratrakanvong (Piw)
| No comments yet

 

การเขียน 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/

การใช้งาน Multiprocessing และ Threading ใน python
Jula Jiratrakanvong (Piw) 29 October, 2021
Share this post
Archive
Sign in to leave a comment