Skip to content

PyPy เร่งความเร็วโค้ด Python

โลโก้โครงการ pypy

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 ตามนี้ครับ

  1. เข้าไปที่ My Computer คลิก Advanced System Settings
  2. แล้วคลิก Environment Variables
  3. เพิ่ม ;C:\pypy3-2.4.0-win32\pypy3-2.4.0-win32 ไปยังค่า path
  4. แล้วคลิกตกลง

วิธีการติดตั้ง 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

ติดตามบทความต่อไปนะครับ

ขอบคุณครับ

 

Published on Categories ไม่มีหมวดหมู่Tags

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

1 thought on “PyPy เร่งความเร็วโค้ด Python

  1. wannaphong

    สำหรับผู้ใช้ Ubuntu สามารถติดตั้ง PyPy ได้ง่าย ๆ ด้วยนี้ครับ 😀
    $ sudo add-apt-repository ppa:pypy/ppa

    $ sudo apt-get update

    $ sudo apt-get install pypy

    Reply

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *