ตัวอย่างการทำงานจากการใช้ Thread
โดยมีผลลัพธ์ที่ได้คือ การเรียกใช้แบบ Serial จะใช้ CPU Core 1 ตัวเป็นหลักเสมอ อาจมีการสับเปลี่ยน Core เพื่อลดภาระการทำงานของ Core ตัวก่อนหน้าโดย OS บ้าง แต่จะมีเพียง 1 Core ที่ทำงานสูงสุดเสมอ ไม่ว่าจะเรียกฟังค์ชันกี่ครั้งก็ตาม
ผลลัพธ์ของ Threading และ Multiprocessing การทำงานของ CPU Core จะมีลักษณะคล้ายๆกันคือ Core ที่ทำงานนั้นจะขึ้นอยู่กับจำนวนของ Thread หรือ Process ที่ถูกสร้างเพื่อเรียกใช้ฟังค์ชัน

8 Processes


8 Threads
8 Processes
ซึ่งเวลาในการทำงานของแต่ละวิธีนั้นจะแสดงดังตารางด้านล่าง
จากตารางจะพบว่าหากการทำงานเป็นแบบเรียกใช้เพียงครั้งเดียว การทำงานแบบ Serial จะมีประสิทธิภาพมากกว่า ในอีกด้านนั้น ยิ่งจำนวน Loop ในฟังค์ชันนั้นมากขึ้น การทำงานแบบ Multiprocessing นั้นจะให้ประสิทธิภาพการทำงานที่สูงกว่าการทำงานแบบ Serial และ Thread เนื่องจาก Thread ใน Python ไม่ใช่การทำงานแบบขนาน แต่เป็นการสลับการทำงานระหว่าง Thread แทน
และเนื่องจากในการทำงานจริงนั้นจะใช้งานบนบอร์ด Raspberry Pi 3 Model B+ จึงได้นำโค้ดทดลองไปทดสอบบนบอร์ด โดยเรียกใช้ฟังค์ชันการทำงานสูงสุดตามจำนวน Core สูงสุดของบอร์ดคือ 4 Cores
( Notebook ที่ใช้ทดสอบผลด้านบนคือ Lenovo Z580 8 Cores )

( Notebook ที่ใช้ทดสอบผลด้านบนคือ Lenovo Z580 8 Cores )
ซึ่งผลลัพธ์ที่ได้นั้นก็ยังคงสอดคล้องกับผลที่ทดลองบน Lenovo อยู่
ผลสรุปคร่าวๆจากการทดลองทั้งหมดคือ
- ในกรณีที่เรียกใช้ฟังค์ชันที่มีการทำงานเพียงครั้งเดียวนั้น การเรียกใช้แบบปกติหรือแบบ Serial นั้น ใช้เวลาน้อยกว่าทั้ง 2 กรณี
- ในกรณีที่ฟังค์ชันนั้นมี loop หรือการทำซ้ำอยู่ภายในเป็นจำนวนมากๆ เวลาในการทำงานนั้นจะขึ้นอยู่กับ จำนวนของการเรียกใช้ฟังค์ชัน
- หากมีการเรียกใช้น้อย เวลาการทำงานของทั้ง 3 วิธีจะไล่เลี่ยกัน
- หากมีการเรียกใช้มากๆ เวลาการทำงานของ Multiprocessing จะเร็วกว่า ตามมาด้วย Serial และ Thread ตามลำดับ
จากรูปภาพด้านบนจะสังเกตได้ว่าในระหว่างการทดสอบนั้นทำให้อุณหภูมิของ CPU สูงขึ้นด้วย ต้องใช้งานอย่างระมัดระวัง
ไม่มีความคิดเห็น:
แสดงความคิดเห็น