1. ฟังค์ชันที่ไม่มีการคำนวณใดๆเกิดขึ้น มีเพียง Delay ของเวลาเท่านั้น
2. ฟังค์ชันที่เพิ่มการคำนวณแบบวน Loop เข้ามาแต่ไม่มีการใช้ Delay
โดยทั้ง 2 ฟังค์ชันจะมีองค์ประกอบคือ ProcessID , Process Name และ Thread Name
แต่ละฟังค์ชันจะทดลอง 3 วิธีคือ
1. ทดลองแบบ Serial คือ เรียกใช้ฟังค์ชันโดยตรง
2. ทดลองแบบ Multithreaded คือ เรียกใช้ฟังค์ชันผ่านการใช้ threading Module
3. ทดลองแบบ Multiprocessing คือ เรียกใช้ฟังค์ชันผ่านการใช้ multiprocessing Module
3. ทดลองแบบ Multiprocessing คือ เรียกใช้ฟังค์ชันผ่านการใช้ multiprocessing Module
โดยผลการทดลองที่ได้คือ

ในแบบการใช้ Delay อย่างเดียวจะพบว่า การรันแบบ Serial จะใช้เวลาที่ 4 วินาที ส่วนของ Multithreaded และ Multiprocessing นั้น เวลาในการทำงานลดลงไปกว่า 1/4 แต่ของ Multithreaded นั้นจะเร็วกว่าอยู่เล็กน้อย เนื่องจากการสลับ Process นั้นทำให้เกิด cost ในการทำงานที่สูงกว่า

ในแบบที่มีการคำนวณค่าร่วมด้วย จะพบว่าการรันแบบ Serial และแบบ Multithreaded นั้นมีเวลาการทำงานที่ใกล้เคียงกัน แต่ในทางกลับกัน Multiprocessing กลับทำงานได้เร็วกว่าเนื่องจากจริงๆแล้ว Multithreaded ใน Python นั้นไม่ใช่การทำงานแบบ Parallel อย่างแท้จริง แต่เป็นการทำงานไปทีละ thread สลับกันจนจบ ส่วนของ Multiprocessing แต่ละ process นั้นทำงานกันแบบ truly parallel ไม่ต้องมีการสลับลำดับการทำงาน แต่ทำไปพร้อมกันจนจบ
Reference : https://medium.com/@espressofx/parallel-%E0%B9%81%E0%B8%A5%E0%B8%B0-concurrent-programming-%E0%B8%82%E0%B8%AD%E0%B8%87-python-9a85f16803d6
Reference : https://medium.com/@espressofx/parallel-%E0%B9%81%E0%B8%A5%E0%B8%B0-concurrent-programming-%E0%B8%82%E0%B8%AD%E0%B8%87-python-9a85f16803d6
ไม่มีความคิดเห็น:
แสดงความคิดเห็น