การพัฒนาโปรแกรมด้วยภาษา Python มักให้ความสะดวกและง่ายดายในการเขียนโค้ด แต่เมื่อพูดถึงการประมวลผลแบบพร้อมกันหรือการจัดการหลายๆ กระบวนการ (Multi-processing) หลายคนอาจรู้สึกว่าเรื่องนี้ค่อนข้างซับซ้อน แต่ที่จริงแล้ว Python มี module ที่ชื่อว่า `multiprocessing` ที่ช่วยให้การจัดการ Multi-process นั้นเป็นเรื่องที่ทำได้ง่ายขึ้น ในบทความนี้ เราจะรีวิววิธีการใช้งาน module `multiprocessing` ใน Python แบบง่ายๆ พร้อมด้วยตัวอย่างการใช้งาน 3 ตัวอย่าง และอธิบายการทำงาน รวมถึงยกตัวอย่าง use case จากโลกจริงเพื่อให้เห็นภาพการประยุกต์ใช้งานได้ชัดเจนขึ้น
ภาษา Python มีความสามารถในการจัดการโปรแกรมที่ทำงานพร้อมกันหลายโปรแกรมผ่าน module `multiprocessing`. การใช้งาน Multi-process ช่วยให้โปรแกรมของคุณสามารถประมวลผลได้หลายงานพร้อมๆ กันบน CPU ที่มีหลายคอร์ ซึ่งสามารถช่วยเพิ่มประสิทธิภาพในการทำงานได้อย่างมาก
สมมติเรามีงานที่ต้องการรันเป็นอิสระกัน 4 งานพร้อมๆ กัน โดยแต่ละงานทำการปริ้นต์หมายเลขออกมา
ในตัวอย่างนี้ เราสร้างกระบวนการ (Process) ใหม่ 4 กระบวนการ โดยแต่ละกระบวนการจะทำงานเป็นอิสระกัน และปริ้นต์หมายเลขออกมาผ่านฟังก์ชัน `print_number`.
อีกวิธีหนึ่งในการจัดการ Multi-process คือการใช้ Pool ที่ช่วยให้สามารถจัดการกับการจัดสรรกระบวนการและการทำงานได้โดยอัตโนมัติ
ในตัวอย่างนี้เราใช้ `Pool` เพื่อสร้างกระบวนการทำงาน parallel กันได้ 3 กระบวนการพร้อมๆ กัน โดย `pool.map` จะแมปฟังก์ชัน `square` กับลิสต์ `[0, 1, 2, 3, 4, 5]`.
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: python multi-processing multiprocessing module multiprocessing.process multiprocessing.pool concurrency parallel_processing programming code_example use_case cpu core process_management python_programming
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com