O'Reilly logo

Python High Performance Programming by Gabriele Lanaro

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Particle simulator in Cython

Now that we have a basic understanding on how Cython works we can rewrite the ParticleSimulator.evolve method. Thanks to Cython, we can convert our loops in C, thus removing the overhead introduced by the Python interpreter.

In Chapter 2, Fast Array Operations with Numpy, we wrote a fairly efficient version of the evolve method using NumPy. We can rename the old version as evolve_numpy to differentiate it from the new version:

 def evolve_numpy(self, dt): timestep = 0.00001 nsteps = int(dt/timestep) r_i = np.array([[p.x, p.y] for p in self.particles]) ang_speed_i = np.array([p.ang_speed for pin self.particles]) v_i = np.empty_like(r_i) for i in range(nsteps): norm_i = np.sqrt((r_i ** 2).sum(axis=1)) v_i = r_i[:, [1, ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required