Meine Python 3-Projekte verwenden Cython sehr.Cython: pyximport: Aktivieren der Profilerstellung in pyximport.install
In Produktionsbereitstellung, ich bin ein Build-Skript, die unter anderem die Profilierung deaktiviert:
from distutils.core import setup
from Cython.Build import cythonize
import os
compiler_directives = {
'language_level': 3,
'optimize.use_switch': True,
'profile': True,
}
setup(
packages=["XXXXXX"],
ext_modules=cythonize(
module_list="**/*.pyx",
compiler_directives=compiler_directives,
)
)
In Entwicklung, ich bin mit pyximport. Um den Unterschied zwischen den beiden Kontexten zu machen, teste ich, ob der "production" -Benutzer in der obersten __init__.py
Datei des Projekts verwendet wird. Ist dies nicht der Produktion ist, verwende ich pyximport; pyximport.install
, so dass es völlig transparent wird:
if getpass.getuser != PRODUCTION_USER_NAME:
import pyximport
pyximport.install(
pyximport=True,
pyimport=False,
build_dir=None,
build_in_temp=True,
setup_args={},
reload_support=False,
load_py_module_on_import_failure=False,
inplace=False,
language_level=3,
)
Ich möchte die Profilierung für alle cython Dateien ermöglichen, während in Entwicklungsumgebung. Ich habe versucht, das profile=True
Argument zur piximport.install
Aussage hinzuzufügen, aber es funktioniert nicht.
Wie kann ich fortfahren?
Einige zusätzliche Bemerkungen:
ich möchte und sie vor commiting ...
Mit
.pyxbld
Dateien ist keine Entfernung vermeidenProfile=True
in allen Quellcodes, während in der Entwicklung drängen Option für mich, weil ich 46 Pyx-Dateien habe und plane, viel mehr zu haben ... Es sei denn, es gibt eine Möglichkeit, nur eine Datei zu installieren, um alle Pyx wie das Build-Skript zu unterstützen, aber ich habe nicht gefunden, wie.
Danke für Ihre Hilfe.