การประมวลผล Pandas Data Frame แบบ Parallel

Kritchai Tadbhusinwat
G-Able
Published in
1 min readSep 14, 2022
Image from https://www.vecteezy.com/

ในภาษา Python จะนิยมใช้ module Pandas ในการจัดการกับข้อมูล ซึ่งรูปแบบในการจัดเก็บจะมีลักษณะเป็นตาราง (เป็น column , row) เรียกว่า DataFrame

การประมวลผลข้อมูลใน DataFrame นั้น โดยทั่วไป ก็จะทำงานไล่ไปทีละแถว ซึ่งถ้าหากข้อมูลมีไม่มาก ระยะเวลาที่ใช้นั้นก็จะไม่นาน แต่ถ้าหากว่าจำนวนข้อมูลมีมาก เวลาที่ใช้ก็จะเพิ่มขึ้นตามจำนวนข้อมูล ในบทความนี้จะเสนอถึงเทคนิคในการลดระยะเวลา คือ แบ่งข้อมูลใน DataFrame ออกเป็นส่วนย่อย ๆ แล้วประมวลผลไปพร้อม ๆ กัน เรียกว่า การประมวลผลแบบขนาน(Parallel Processing) หรือ MultiProcessing (จำนวนส่วนย่อยขึ้นอยู่กับจำนวน cpu ของเครื่องที่ run ด้วย)

ในที่นี้จะยกตัวอย่างการประมวลผลแบบขนานผ่าน module multiprocessing ทำการดึงข้อมูลชื่อตัวละคร ภาพยนต์เรื่อง Star Wars จาก api ที่ website https://swapi.dev/

Image from https://punchingpandas.com/

จากผลการ run โปรแกรมด้านบนจะทำการเปรียบเทียบระหว่าง การประมวลผลแบบ 1 process และ 8 process ซึ่งจะเห็นว่า เมื่อทำการประมวลผลแบบขนานจะใช้เวลาน้อยลงอย่างมาก

ตัวอย่าง ข้อมูลที่ได้จากการ run โปรแกรมด้านบน

เทคนิคการลดระยะเวลาในการประมวลผล ยังมีวิธีอื่น ๆ อีก เช่น การเลือกอัลกอริทึมที่ไม่ซ้ำซ้อน , การเลือกใช้ภาษาให้เหมาะกับงาน , การประมวลผลแบบกระจาย(Distributed processing) เป็นต้น สำหรับในภาษา Python ยังมี module อื่น ๆ ที่ทำหน้าที่ด้านนี้อีก เช่น Spark , Dask , Ray เป็นต้น

เพิ่มเติม เรื่องการหาจำนวน cpu ของเครื่องที่ run

จำนวน cpu core จะมีอยู่ 2 แบบ คือ
1. Physical จำนวน core ที่มีอยู่จริง ๆ เป็น Hardware
2. Logical จำนวน core ที่ระบบเห็น เช่น Physical มี 4 แต่มีระบบ Hyper Threading คือ การจำลอง 1 cpu ให้เห็นเป็น 2 cpu (เอา physical x2) ก็จะเห็น logical เป็น 8

ในภาษา Python การดูว่าเครื่องที่ใช้มีจำนวน cpu เท่าไร สามารถเขียนโปรแกรมได้ ดังนี้

--

--

Kritchai Tadbhusinwat
G-Able
Writer for

Programmer บริษัทเอกชนที่เป็นส่วนหนึ่งของเบื้องหลังให้กับบริษัทชั้นนำต่าง ๆ และ Tutor สอนกวดวิชาคณิตศาสตร์/ฟิสิกส์ เพื่อเตรียมสอบเข้ามหาวิทยาลัย