
PyPy เป็นโครงการหนึ่งที่ต้องการเร่งความเร็วโค้ดโปรแกรมของ Python ปกติแล้ว Python จะใช้ CPython แต่ Python เป็นภาษาสคริปต์ เมื่อนำไปรันจะต้องมีการนำไป Interpreter แปลโปรแกรมแต่ละบรรทัดเป็นภาษาเครื่องอยู่ดี
ทำให้ภาษา Python ช้ากว่าภาษาที่เป็น Compiler เช่น ภาษา C เป็นต้น
ทำให้มีนักพัฒนาภายนอกได้สร้าง PyPy ขึ้นมา โดยใช้ JIT compiler เข้ามาช่วย ทำให้ได้ความเร็วขึ้นขึ้น เราสามารถนำโค้ด Python ไปรันได้เลย โดยไม่ต้องเขียนโค้ดใหม่
แต่มีหลายโมดูลที่ไม่รองรับการทำงานบน PyPy เช่น OpenCV เป็นต้น รองรับเฉพาะ CPython แนะนำให้ทำการตรวจสอบจากหน้าเว็บนักพัฒนาโมดูลนั้นครับ
ปัจจุบันนี้ PyPy รองรับทั้ง Python 2 , Python 3 โดย PyPy มี 2 รุ่นดังนี้
- PyPy เป็นรุ่นสำหรับ Python 2
- PyPy3 เป็นรุ่นสำหรับ Python 3
สามารถโหลดได้ที่ http://www.pypy.org/download.html
ผมจะพาผู้อ่านไปใช้ PyPy กันครับ
วิธีการติดตั้ง PyPy
วิธีการติดตั้งนี้ใช้ได้ทั้ง PyPy และ PyPy3 ครับ
วิธีการติดตั้ง PyPy สำหรับ Windows
เข้าไปที่ http://www.pypy.org/download.html แล้วเลือกหาเวชั่น PyPy ที่ต้องการแล้วคลิก Windows binary (32bit) จะได้ไฟล์ซิป ตัวอย่างเช่น pypy3-2.4.0-win32.zip
เมื่อได้ไฟล์แล้วให้ทำการแตกไฟล์ซิป แล้วเปิดคอมมานด์ไลน์เข้าไปยังโฟลเดอร์ที่เก็บไฟล์ซิปแล้วเข้าไปยังโฟลเดอร์ที่แตกไฟล์ซิป แล้วเข้าไปยังโฟลเดอร์ pypy อีกรอบหนึ่ง แล้วสั่ง pypy.exe
ตัวอย่างเช่น ผมแตกไฟล์ pypy3-2.4.0-win32.zip ไว้ที่ไดร์ว C จะได้ pypy3-2.4.0-win32 และข้างในจะมี pypy3-2.4.0-win32 อีกทอดหนึ่ง ผมเปิดคอมมานด์ไลน์ใช้คำสั่ง
>cd C:\pypy3-2.4.0-win32\pypy3-2.4.0-win32
>pypy.exe
Python 3.2.5 (b2091e973da6, Oct 19 2014, 21:25:51)
[PyPy 2.4.0 with MSC v.1500 32 bit] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>>
เพื่อให้เรียกใช้งานได้สะดวกยิ่งขึ้น ให้ set path ตามนี้ครับ
- เข้าไปที่ My Computer คลิก Advanced System Settings
- แล้วคลิก Environment Variables
- เพิ่ม ;C:\pypy3-2.4.0-win32\pypy3-2.4.0-win32 ไปยังค่า path
- แล้วคลิกตกลง
วิธีการติดตั้ง PyPy สำหรับลินุกซ์
ให้เข้าไปที่ http://www.pypy.org/download.html แล้วเลือกหาเวชั่น PyPy แล้วเลือกไฟล์ตามระบบ เช่น
- Linux x86 binary
- Linux x86-64 binary
คัดลอกที่ตั้งไฟล์ แล้วเปิดคอมมานด์ไลน์สั่ง
mkdir $HOME/tarballs
cd $HOME/tarballs
wget ลิงค์ที่ตั้งไฟล์ที่ต้องการ
cd $HOME
tar xvjf tarballs/ชื่อไฟล์ที่โหลด.tar.bz2
ตัวอย่างเช่น
mkdir $HOME/tarballs
cd $HOME/tarballs
wget https://bitbucket.org/pypy/pypy/downloads/pypy3-2.4.0-linux.tar.bz2
cd $HOME
tar xvjf tarballs/pypy3-2.4.0-linux.tar.bz2
แล้วเรียกใช้งานด้วยคำสั่ง
./ชื่อโฟลเดอร์ที่แตกไฟล์จากซิป/bin/pypy
ตัวอย่างเช่น
./pypy3-2.4.0-linux/bin/pypy
เพื่อให้เรียกใช้งานสะดวกยิ่งขึ้น สามารถตั้งค่า path ได้ดังนี้ครับ ใช้คำสั่ง
echo "export PATH=\${HOME}/ชื่อโฟลเดอร์ที่แตกไฟล์จากซิป/bin:\${PATH}" >> ~/.profile
echo "export LD_LIBRARY_PATH=\${HOME}/ชื่อโฟลเดอร์ที่แตกไฟล์จากซิป/lib:\${LD_LIBRARY_PATH}" >> ~/.profile
source ~/.profile
ตัวอย่างเช่น
echo "export PATH=\${HOME}/pypy3-2.4.0-linux/bin:\${PATH}" >> ~/.profile
echo "export LD_LIBRARY_PATH=\${HOME}/pypy3-2.4.0-linux/lib:\${LD_LIBRARY_PATH}" >> ~/.profile
source ~/.profile
แล้วลองเรียกใช้งาน pypy ดูครับ
วิธีการติดตั้ง PyPy สำหรับ Mac OS
เข้าไปที่ http://www.pypy.org/download.html แล้วเลือกหาเวชั่น PyPy แล้วเลือกไฟล์
Mac OS/X binary (64bit)
ให้ทำการโหลดไฟล์มาไว้ที่เครื่องแล้วทำการแตกไฟล์ซิป เสร็จเปิดคอมมานด์ไลน์เปิดไปยังโฟลเดอร์ที่แตกไฟล์แล้วสั่ง
./ชื่อโฟลเดอร์ที่แตกไฟล์จากซิป/bin/pypy
ตัวอย่างเช่น
$ ./pypy-2.2.1-osx64/bin/pypy
สำหรับการ set path ทำด้งนี้ครับ
เพิ่มเข้าไปยัง $HOME/.profile:
export PATH=$HOME/pypy-2.2.1-osx64/bin:${PATH}
แล้วสั่ง
source $HOME/.profile
ออกจากระบบแล้วเข้าระบบใหม่ ลองสั่ง pypy ดูครับ
ผมได้แนะนำวิธีการติดตั้ง PyPy ไปเรียบร้อยแล้ว แต่ PyPy ไม่ได้มี pip มาด้วย เราจึงต้องติดตั้ง pip ลง PyPy ดังนี้ครับ
สำหรับ Windows
ให้โหลดไฟล์ get-pip.py จาก https://bootstrap.pypa.io/get-pip.py แล้ว เปิดคอมมานด์ไลน์เข้าไปยังโฟลเดอร์ที่เก็บไฟล์ get-pip.py แล้วสั่ง
pypy get-pip.py
สำหรับลินุกซ์และ Mac OS
เปิดคอมมานด์ไลน์แล้วสั่ง
$ curl -O https://bootstrap.pypa.io/get-pip.py
$ pypy get-pip.py
$ pypy pip install pygments #ตัวอย่าง
เวลาจะรันโค้ดจากไฟล์ py สามารถรันได้ง่าย ๆ เปลี่ยนจาก
python ไฟล์.py
ไปเป็น
pypy ไฟล์.py
หากต้องการปิด JIT compiler (การปิด JIT compiler เหมาะกับงานที่ไม่มีการ loop ซ้ำหลาย ๆ รอบครับ)
pypy --jit off
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)