CPython
Cpython是用C语言实现的Python解释器。作为官方实现,它是最广泛使用的Python解释器。除了CPython以外,它是最广泛使用的Python解释器。
除了CPython以外,还有用Java实现的JPython,用.NET实现的IronPython,使Python方便地和Java程序、.NET程序集成。
另外还有一些实验性的Python解释器比如PyPy。
CPython是使用字节码的解释器,任何程序源代码在执行之前先要编译成字节码。它还有和几种其它语言(包括C语言)交互的外部函数接口。
支持的平台
类Unix
* AIX
* BSD
* Darwin
* FreeBSD
* HP-UX
* IRIX 5以及更高版本
* 九号项目
* Mac OS X
* NetBSD
* Linux
* OpenBSD
* Solaris
* Tru64
*其它Unix
桌面操作系统
* AROS
* AtheOS
* BeOS
* Windows
* Windows NT
* OS/2
* RISC OS
特殊的和嵌入式
* GP2X
* iPodLinux
* Nintendo DS
* Nintendo Gamecube
* Symbian OS Series60
* Nokia 770 Internet Tablet
* Nokia N800
* Nokia N810
* Palm OS
* PlayStation 2
* PlayStation 3(Linux)
* Psion
* QNX
* Sharp Zaurus
* Xbox/XBMC
* VxWorks
* Openmoko
大型机和其它
* OS/390
* VMS
* z/OS
曾经支持的平台
PEP 11列出了CPython停止支持的平台。
- DOS(2.0开始停止支持)
- IRIX 4(2.3开始停止支持)
- Mac OS 9(2.4开始停止支持)
- MINIX(2.3开始停止支持)
非官方的移植
这些版本没有进入Python软件基金会的官方版本,这些版本包含了为特定平台提供的模块,如为PSP提供的图像和声音API以及为S60提供的SMS和照相机API。
- Amiga [2]
- AS/400 [3]
- DOS平台使用的DJGPP [4]
- PSP [5]
- Symbian [6]
- Windows CE/Pocket PC [7]
并发问题
在多处理器的计算机上使用CPython的主要问题来自CPython的全局解释器锁(Global Interpreter Lock,GIL),它使得CPython不能进行并发编程。
[3]要做到并发编程,就必须为每一个线程运行一个解释器。
如果这样的话,它们之间的通讯就非常困难。
所以社区内一直在讨论是否要从CPython中去除GIL。[4]
注释
^ Martelli, Alex. Python in a Nutshell 2nd edition. O'Reilly. 2006: 5–7. ISBN 0-596-10046-9.
参考
^ Release 3.7.1. Python Software Foundation. [2018-10-20].
^ Release v2.7.15. Python Software Foundation. [2018-05-27].
^ Python/C API Reference Manual: Thread State and the Global Interpreter Lock 互联网档案馆的存档,存档日期2008-09-14.
^ Python Library and Extension FAQ: Can't we get rid of the Global Interpreter Lock?