Denna handledning visar hur du använder Cython (.pyx
) i Python. Cython är överordnad kod till Python som kompileras till C. Cython-moduler kan användas för att göra delar av ditt projekt snabbare eftersom C är ett mycket snabbt språk.
En Cython-modul måste kompileras innan den kan användas och denna kompilering sker i två steg. En Cyton-modul (hello.pyx
) kompileras först till en C-fil (hello.c
), .c
-filen kompileras sedan till en .pyd
-fil (Windows). Jag kommer att kompilera Cython-kod med hjälp av kommandotolken i den här handledningen, detta genom att använda en installationsfil (setup.py
). Du behöver följande bibliotek: numpy, Cython och setuptools. Kom ihåg att namn är skiftlägeskänsliga i Python.
Cython-moduler
Jag har skapat två enkla Cython-moduler: hello.pyx
och date_and_time.pyx
. Dessa filer sparas under annytab/cython i mitt projekt. Innehållet i dessa filer visas nedan.
# File: annytab/cython/hello.pyx
# Say hello to someone
def say_hello_to(name):
print("Hello %s!" % name)
# File: annytab/cython/date_and_time.pyx
# Import libraries
cimport cpython.datetime
# Get today's date and time
def now():
print("Today's date and time: %s" % cpython.datetime.datetime.now())
Installationsfil
En installationsfil (setup.py
) används för att kompilera mina två Cython-moduler, installationsfilen lagras i samma mapp som .pyx
-filerna. Filens innehåll visas nedan.
# Import libraries
import numpy
import setuptools
import Cython.Build
# Compile Cython files
setuptools.setup(name = 'Hello', ext_modules = Cython.Build.cythonize('hello.pyx'), include_dirs=[numpy.get_include()])
setuptools.setup(name = 'Date and Time', ext_modules = Cython.Build.cythonize('date_and_time.pyx'), include_dirs=[numpy.get_include()])
Kompilering
Öppna kommandotolken, sök efter cmd
om du inte hittar den. Bläddra till mappen där din setup.py
-fil finns och skriv in python setup.py build_ext --inplace
. Du måste ha lagt till en sökväg till Python som miljövariabel för att detta ska fungera, läs Installera Python och bibliotek med Visual Studio om du behöver hjälp med detta.
Microsoft Windows [Version 10.0.18363.476]
(c) 2019 Microsoft Corporation. Med ensamrätt.
C:\WINDOWS\system32>cd C:\DATA\Python-projects\Iris\Iris\annytab\cython
C:\DATA\Python-projects\Iris\Iris\annytab\cython>python setup.py build_ext --inplace
Använd moduler
Kompileringsprocessen sparade filer i katalogen där installationsfilen finns. Nu kan jag anropa metoder i mina Cython-moduler från Python-moduler.
# Import libraries
import annytab.cython.hello
import annytab.cython.date_and_time
# Say hello
annytab.cython.hello.say_hello_to('Wayne Gretzky')
# Get today's date and time
annytab.cython.date_and_time.now()