ในบทความที่ผ่านมา ผมได้นำเสนอวิธีการเร่งความเร็วโค้ดไพทอน ไม่ว่าจะเป็น เขียนโมดูลแยกออกมา, ใช้ for loop แทน while loop , เขียน Cython เชื่อมภาษาซีกับไพทอน, คอมไพล์โค้ดไปเป็นไฟล์ .pyc, แปลงโค้ดไปเป็นภาษา Java C/C++ หรือใช้ PyPy ในการรันโค้ด เป็นต้น
แต่ถ้าหากจำเป็นต้องการใช้งาน CPython เท่านั้น ผมขอแนะนำอีกวิธีหนึ่ง คือ ใช้โมดูล Numba เข้ามาช่วย
Numba เป็นโมดูล JIT compiler สำหรับใช้คอมไพล์โค้ดไพทอนด้วย LLVM ช่วยเร่งความเร็วในการคอมไพล์โค้ดไพทอนไปเป็นภาษาเครื่อง
โดยโมดูลนี้ใช้ NumPy เป็นกลไกในการแปลงโค้ดภาษาไพทอนไปเป็นภาษาเครื่อง
- พัฒนาโดย Continuum Analytics, Inc (ผู้พัฒนา Anaconda)
- รองรับทั้ง Python 2 และ Python 3
- ใช้ BSD License
การติดตั้ง Numba
สามารถติดตั้งได้โดยใช้คำสั่ง pip:
pip install numba
หรือสำหรับท่านที่ใช้ Anaconda Distribution:
conda install numba
สำหรับผู้ใช้งาน Windows
ก่อนอื่นให้ทำการโหลด llvmlite มาติดตั้งก่อน โหลดไฟล์ .whl ได้จาก http://www.lfd.uci.edu/~gohlke/pythonlibs/#llvmlite ทำการติดตั้งเสร็จ
แล้วทำการติดตั้ง Numba โดยทำการโหลดไฟล์ .whl มาติดตั้งได้จาก http://www.lfd.uci.edu/~gohlke/pythonlibs/#numba
การใช้งานเบื้องต้น
ใช้ Numba ในการคอมไพล์โค้ดไฟล์ด้วย @jit decorator
ผลลัพธ์
1.745886006120316 0.06488709573499385
จะเห็นได้ว่า ฟังก์ชัน f1 ที่ไม่ใช้ Numba จะทำงานช้ากว่า ฟังก์ชัน f2 ที่ใช้ Numba เข้ามาช่วย
อ่านเอกสารการใช้งานได้ที่ http://numba.pydata.org/doc.html
หน้าเว็บ Numba http://numba.pydata.org/
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)