Particle simulator in Cython

Now that we have a basic understanding of 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 3, Fast Array Operations with NumPy and Pandas, 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 p in self.particles])         v_i = np.empty_like(r_i)         for i in range(nsteps):  norm_i = np.sqrt((r_i ** 2).sum(axis=1)) ...

Get Python High Performance - Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.