Commit 09692418 authored by scoder's avatar scoder

Merge pull request #502 from phaustin/python3

Python3
parents 08c01c46 c759fab3
...@@ -5,8 +5,10 @@ test: all ...@@ -5,8 +5,10 @@ test: all
python run_primes.py 20 python run_primes.py 20
python run_numeric_demo.py python run_numeric_demo.py
python run_spam.py python run_spam.py
python integrate_timing.py
cd callback; $(MAKE) test cd callback; $(MAKE) test
cd embed; $(MAKE) test
clean: clean:
@echo Cleaning Demos @echo Cleaning Demos
@rm -f *.c *.o *.so *~ core @rm -f *.c *.o *.so *~ core
......
* To run demos do::
cd Demos
make test
which runs run_primes.py, run_numeric_demo.py, run_spam.py,
integrate_timing.py, callback/runcheese.py and embed/embedded
* For other demos::
cd libraries
python setup.py build_ext --inplace
python -c 'import call_mymath;print(call_mymath.call_sinc(1))'
To run one of the benchmarks for 10 iterations to compare cython and python timings::
cd benchmarks
python setup.py build_ext --inplace
python nqueens.py -n 10
python -c 'import nqueens;print(nqueens.test_n_queens(10))'
To demo cython/bin/cython_freeze::
make
./nCr 10 5
./python
* Build notes
* benchmarks/chaos.py requires cython 0.24 or newer
* embed and freeze work for python2, require cython 0.24 or higher
for python 3.5
...@@ -9,5 +9,5 @@ setup( ...@@ -9,5 +9,5 @@ setup(
name = 'benchmarks', name = 'benchmarks',
ext_modules = cythonize("*.py", language_level=3, annotate=True, ext_modules = cythonize("*.py", language_level=3, annotate=True,
compiler_directives=directives, compiler_directives=directives,
exclude="setup.py"), exclude=["setup.py"]),
) )
...@@ -10,4 +10,5 @@ def find(f): ...@@ -10,4 +10,5 @@ def find(f):
find_cheeses(callback, <void*>f) find_cheeses(callback, <void*>f)
cdef void callback(char *name, void *f): cdef void callback(char *name, void *f):
(<object>f)(name) (<object>f)(name.decode('utf-8'))
...@@ -5,3 +5,4 @@ def report_cheese(name): ...@@ -5,3 +5,4 @@ def report_cheese(name):
cheese.find(report_cheese) cheese.find(report_cheese)
...@@ -6,12 +6,16 @@ RST2HTML = rst2html ...@@ -6,12 +6,16 @@ RST2HTML = rst2html
PY_LDFLAGS = $(shell $(PYTHON) -c 'from distutils.sysconfig import get_config_var as g; import sys; sys.stdout.write(" ".join([g("LINKFORSHARED"), "-L"+g("LIBPL")]) + "\n")') PY_LDFLAGS = $(shell $(PYTHON) -c 'from distutils.sysconfig import get_config_var as g; import sys; sys.stdout.write(" ".join([g("LINKFORSHARED"), "-L"+g("LIBPL")]) + "\n")')
PY_CPPFLAGS = $(shell $(PYTHON) -c 'from distutils.sysconfig import *; import sys; sys.stdout.write("-I"+get_python_inc() + "\n")') PY_CPPFLAGS = $(shell $(PYTHON) -c 'from distutils.sysconfig import *; import sys; sys.stdout.write("-I"+get_python_inc() + "\n")')
PY_LDLIBS = $(shell $(PYTHON) -c 'from distutils.sysconfig import get_config_var as g; import sys; sys.stdout.write(" ".join(["-lpython"+g("VERSION"), g("SYSLIBS"), g("LIBS"), g("LOCALMODLIBS")]) + "\n")') LIBDIR1 := $(shell $(PYTHON) -c "from distutils import sysconfig; print(sysconfig.get_config_var('LIBDIR'))")
LIBDIR2 := $(shell $(PYTHON) -c "from distutils import sysconfig; print(sysconfig.get_config_var('LIBPL'))")
PYLIB := $(shell $(PYTHON) -c "from distutils import sysconfig; print(sysconfig.get_config_var('LIBRARY')[3:-2])")
LIBS := $(shell $(PYTHON) -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'))")
CFLAGS = -fPIC -fno-strict-aliasing -g -O2 -Wall -Wextra CFLAGS = -fPIC -fno-strict-aliasing -g -O2 -Wall -Wextra
CPPFLAGS = $(PY_CPPFLAGS) CPPFLAGS = $(PY_CPPFLAGS)
LDFLAGS = $(PY_LDFLAGS) LDFLAGS = $(PY_LDFLAGS)
LDLIBS = $(PY_LDLIBS) LDLIBS = -L$(LIBDIR1) -L$(LIBDIR2) -l$(PYLIB)
# Name of executable # Name of executable
......
...@@ -8,7 +8,7 @@ number = 10 ...@@ -8,7 +8,7 @@ number = 10
py_time = None py_time = None
for m in ('integrate0', 'integrate1', 'integrate2'): for m in ('integrate0', 'integrate1', 'integrate2'):
print(m) print(m)
t = min(timeit.repeat("integrate_f(0.0, 10.0, 10000000)", "from %s import integrate_f" % m, number=number)) t = min(timeit.repeat("integrate_f(0.0, 10.0, 100000)", "from %s import integrate_f" % m, number=number))
if py_time is None: if py_time is None:
py_time = t py_time = t
print(" ", t / number, "s") print(" ", t / number, "s")
......
import Numeric import numpy
import numeric_demo import numpy_demo
a = Numeric.array([[1.0, 3.5, 8.4], [2.3, 6.6, 4.1]], "f") a = numpy.array([1.0, 3.5, 8.4, 2.3, 6.6, 4.1], "d")
numeric_demo.print_2d_array(a) numpy_demo.sum_of_squares(a)
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment