การประมวลผล Pandas Data Frame แบบ Parallel
ในภาษา Python จะนิยมใช้ module Pandas ในการจัดการกับข้อมูล ซึ่งรูปแบบในการจัดเก็บจะมีลักษณะเป็นตาราง (เป็น column , row) เรียกว่า DataFrame
การประมวลผลข้อมูลใน DataFrame นั้น โดยทั่วไป ก็จะทำงานไล่ไปทีละแถว ซึ่งถ้าหากข้อมูลมีไม่มาก ระยะเวลาที่ใช้นั้นก็จะไม่นาน แต่ถ้าหากว่าจำนวนข้อมูลมีมาก เวลาที่ใช้ก็จะเพิ่มขึ้นตามจำนวนข้อมูล ในบทความนี้จะเสนอถึงเทคนิคในการลดระยะเวลา คือ แบ่งข้อมูลใน DataFrame ออกเป็นส่วนย่อย ๆ แล้วประมวลผลไปพร้อม ๆ กัน เรียกว่า การประมวลผลแบบขนาน(Parallel Processing) หรือ MultiProcessing (จำนวนส่วนย่อยขึ้นอยู่กับจำนวน cpu ของเครื่องที่ run ด้วย)
ในที่นี้จะยกตัวอย่างการประมวลผลแบบขนานผ่าน module multiprocessing ทำการดึงข้อมูลชื่อตัวละคร ภาพยนต์เรื่อง Star Wars จาก api ที่ website https://swapi.dev/
จากผลการ 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 เท่าไร สามารถเขียนโปรแกรมได้ ดังนี้