ยินดีต้อนรับสู่ Cython!
Cython เป็นคอมไพเลอร์ Python ที่ทำให้การเขียนส่วนขยาย C สำหรับ Python เป็นเรื่องง่ายเหมือนกับ Python Cython มีพื้นฐานมาจาก Pyrex แต่รองรับฟังก์ชันการทำงานและการเพิ่มประสิทธิภาพที่ล้ำสมัยมากขึ้น
Cython แปลโค้ด Python เป็นโค้ด C/C++ แต่ยังรองรับการเรียกใช้ฟังก์ชัน C เพิ่มเติมและการประกาศประเภท C บนตัวแปรและแอตทริบิวต์คลาส สิ่งนี้ทำให้คอมไพลเลอร์สามารถสร้างโค้ด C ที่มีประสิทธิภาพมากจากโค้ด Cython
สิ่งนี้ทำให้ Cython เป็นภาษาในอุดมคติสำหรับการรวมไลบรารี C ภายนอก และสำหรับโมดูล C ที่รวดเร็วซึ่งเพิ่มความเร็วในการประมวลผลโค้ด Python
- เว็บไซต์อย่างเป็นทางการ: https://cython.org/
- เอกสารประกอบ: https://docs.cython.org/
- พื้นที่เก็บข้อมูล Github: https://github.com/cython/cython
- วิกิ: https://github.com/cython/cython/wiki
Cython มีการดาวน์โหลดประมาณ 30 ล้านครั้งต่อเดือนบน PyPI คุณสามารถ สนับสนุนโครงการ Cython ผ่านทาง Github Sponsors หรือ Tidelift
การติดตั้ง:
หากคุณมีคอมไพเลอร์ C อยู่แล้ว ให้รันคำสั่งต่อไปนี้:
pip ติดตั้ง Cython
หรือดูหน้าการติดตั้ง
ใบอนุญาต:
โปรแกรม Pyrex ดั้งเดิมได้รับอนุญาต "โดยไม่มีข้อจำกัด" (ดูด้านล่าง) Cython นั้นได้รับอนุญาตภายใต้ Apache License ที่ได้รับอนุญาต
ดู LICENSE.txt
มีส่วนร่วม:
ต้องการมีส่วนร่วมในโครงการ Cython หรือไม่? นี่คือความช่วยเหลือบางส่วนในการเริ่มต้นของคุณ
ความแตกต่างจากคอมไพเลอร์ Python อื่นๆ
Cython เริ่มต้นเป็นโปรเจ็กต์ในช่วงต้นทศวรรษ 2000 และเอาชนะความพยายามอื่นๆ ส่วนใหญ่ในการผลิตคอมไพเลอร์แบบคงที่สำหรับภาษา Python
โครงการที่คล้ายกันซึ่งมีความเกี่ยวข้องในปัจจุบัน ได้แก่ :
- PyPy การใช้งาน Python พร้อมคอมไพเลอร์ JIT
- ข้อดี: การคอมไพล์ JIT พร้อมการเพิ่มประสิทธิภาพรันไทม์ สอดคล้องกับภาษาอย่างสมบูรณ์ บูรณาการที่ดีกับโค้ด C/C++ ภายนอก
- จุดด้อย: รันไทม์ที่ไม่ใช่ CPython, การใช้ทรัพยากรที่ค่อนข้างมากของรันไทม์, ความเข้ากันได้ที่จำกัดกับส่วนขยาย CPython, ผลลัพธ์ประสิทธิภาพที่ไม่ชัดเจน
- Numba ซึ่งเป็นส่วนขยายของ Python ที่มีคอมไพเลอร์ JIT สำหรับชุดย่อยของภาษา โดยอิงตามโครงสร้างพื้นฐานคอมไพเลอร์ LLVM (อาจรู้จักกันเป็นอย่างดีสำหรับคอมไพเลอร์
clang
C) ส่วนใหญ่จะกำหนดเป้าหมายรหัสตัวเลขที่ใช้ NumPy- ข้อดี: การรวบรวม JIT พร้อมการเพิ่มประสิทธิภาพรันไทม์
- จุดด้อย: รองรับภาษาที่จำกัด, การพึ่งพารันไทม์ค่อนข้างมาก (LLVM), ผลลัพธ์ประสิทธิภาพที่ไม่ชัดเจน
- Pythran ซึ่งเป็นคอมไพเลอร์ส่วนขยาย Python-to-C++ แบบคงที่สำหรับชุดย่อยของภาษา ซึ่งส่วนใหญ่มีเป้าหมายที่การคำนวณเชิงตัวเลข Pythran สามารถ (และอาจดีที่สุด) ใช้เป็นแบ็กเอนด์เพิ่มเติมสำหรับโค้ด NumPy ใน Cython
- mypyc ซึ่งเป็นคอมไพเลอร์ส่วนขยาย Python-to-C แบบคงที่ ซึ่งใช้เครื่องวิเคราะห์ Python แบบคงที่ของ mypy เช่นเดียวกับโหมด Python บริสุทธิ์ของ Cython mypyc สามารถใช้คำอธิบายประกอบประเภท PEP-484 เพื่อปรับโค้ดให้เหมาะสมสำหรับประเภทคงที่
- ข้อดี: รองรับภาษาและการพิมพ์ PEP-484 ได้ดี การอนุมานประเภทที่ดี ประสิทธิภาพที่เพิ่มขึ้นอย่างสมเหตุสมผล
- จุดด้อย: ไม่รองรับการเพิ่มประสิทธิภาพและการพิมพ์ระดับต่ำ, การตีความประเภท Python ที่ให้ความเห็น, ลดความเข้ากันได้ของ Python และวิปัสสนาหลังจากการคอมไพล์
- Nuitka ซึ่งเป็นคอมไพเลอร์ส่วนขยาย Python-to-C แบบคงที่
- ข้อดี: สอดคล้องกับภาษาในระดับสูง ประสิทธิภาพที่เพิ่มขึ้นอย่างสมเหตุสมผล รองรับการเชื่อมโยงแอปพลิเคชันแบบคงที่ (คล้ายกับ cython_freeze แต่มีความสามารถในการรวมการพึ่งพาไลบรารีเข้ากับไฟล์ปฏิบัติการที่มีอยู่ในตัวเอง)
- จุดด้อย: ไม่รองรับการเพิ่มประสิทธิภาพและการพิมพ์ระดับต่ำ
เมื่อเปรียบเทียบกับที่กล่าวมาข้างต้น Cython จัดให้
- การสนับสนุนที่รวดเร็ว มีประสิทธิภาพ และเป็นไปตามข้อกำหนดสูงสำหรับคุณสมบัติภาษา Python เกือบทั้งหมด รวมถึงคุณสมบัติไดนามิกและการวิปัสสนา
- ความเข้ากันได้รันไทม์เต็มรูปแบบกับ CPython เวอร์ชันที่ยังใช้งานอยู่และในอนาคตทั้งหมด
- "สร้างครั้งเดียว คอมไพล์ทุกที่" การสร้างโค้ด C ที่ช่วยให้สามารถทำซ้ำผลลัพธ์ประสิทธิภาพและการทดสอบได้
- การปรับเวลาคอมไพล์ C ให้เข้ากับแพลตฟอร์มเป้าหมายและเวอร์ชัน Python
- รองรับการใช้งาน C-API อื่น ๆ รวมถึง PyPy และ Pyston
- บูรณาการอย่างราบรื่นด้วยรหัส C/C++
- การสนับสนุนอย่างกว้างขวางสำหรับการเพิ่มประสิทธิภาพด้วยตนเองและการปรับลงถึงระดับ C
- ฐานผู้ใช้ขนาดใหญ่ที่มีไลบรารี แพ็คเกจ และเครื่องมือนับพันรายการ
- เกือบสองทศวรรษแห่งการแก้ไขข้อบกพร่องและการเพิ่มประสิทธิภาพโค้ดแบบคงที่
รับประวัติแหล่งที่มาทั้งหมด:
โปรดทราบว่า Cython เคยจัดส่งพื้นที่เก็บข้อมูลควบคุมเวอร์ชันเต็มในการเผยแพร่แหล่งที่มา แต่ไม่ได้จัดส่งอีกต่อไปเนื่องจากข้อจำกัดด้านพื้นที่ หากต้องการรับประวัติแหล่งที่มาทั้งหมดจากไฟล์เก็บถาวรแหล่งที่มาที่ดาวน์โหลด ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง git แล้ว จากนั้นไปที่ไดเร็กทอรีฐานของการแจกจ่ายแหล่งที่มา Cython แล้วพิมพ์:
ทำการซื้อคืน
ต่อไปนี้มาจาก Pyrex:
นี่คือเวอร์ชันการพัฒนาของ Pyrex ซึ่งเป็นภาษาสำหรับการเขียนโมดูลส่วนขยาย Python
หากต้องการข้อมูลเพิ่มเติม โปรดดูที่:
- Doc/About.html สำหรับคำอธิบายภาษา
- INSTALL.txt สำหรับคำแนะนำในการติดตั้ง
- USAGE.txt สำหรับคำแนะนำการใช้งาน
- การสาธิตสำหรับตัวอย่างการใช้งาน
ยินดีรับฟังความคิดเห็น ข้อเสนอแนะ รายงานข้อผิดพลาด ฯลฯ!
เนื้อหาที่มีลิขสิทธิ์: Pyrex ไม่มีข้อจำกัด คุณสามารถใช้ แจกจ่ายซ้ำ แก้ไขและแจกจ่ายเวอร์ชันแก้ไขได้
สามารถดู Pyrex เวอร์ชันล่าสุดได้ที่นี่
Greg Ewing แผนกวิทยาการคอมพิวเตอร์
มหาวิทยาลัยแคนเทอร์เบอรี
ไครสต์เชิร์ช, นิวซีแลนด์
พลเมืองของ NewZealandCorp ซึ่งเป็นบริษัทในเครือของ USA Inc.