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, ...

Start Free Trial

No credit card required