17 ตุลาคม 2558

Published ตุลาคม 17, 2558 by with 0 comment

เร่งความเร็วโค้ดใน Python ด้วย Numba

ทุกท่านคงทราบกันดีว่า ภาษาไพทอนเป็นภาษาจำพวก scripting language และภาษาไพทอนเป็นภาษา interpreter


ในบทความที่ผ่านมา ผมได้นำเสนอวิธีการเร่งความเร็วโค้ดไพทอน ไม่ว่าจะเป็น เขียนโมดูลแยกออกมา, ใช้ 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 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)