In [4]:
%load_ext cython


The cython extension is already loaded. To reload it, use:
  %reload_ext cython

In [ ]:


In [11]:
%%cython
import cython
@cython.cdivision(True)
cdef int primes(int nb_primes):
    cdef int p[10000]
    if nb_primes > 10000:
        nb_primes = 10000
    cdef int len_p = 0  # The current number of elements in p.
    cdef int n = 2
    cdef unsigned int i
    while len_p < nb_primes:
        # Is n prime?
        for i in range(1, len_p):
            if n % i == 0:
                break

        # If no break occurred in the loop, we have a prime.
        else:
            p[len_p] = n
            len_p += 1
        n += 1

    # Let's return the result in a python list:
    result_as_list  = [prime for prime in p[:len_p]]
    return result_as_list

In [12]:
%timeit primes(10)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-12-0bd67c10e16a> in <module>
----> 1 get_ipython().run_line_magic('timeit', 'primes(10)')

~/miniconda3/envs/PyMotW/lib/python3.6/site-packages/IPython/core/interactiveshell.py in run_line_magic(self, magic_name, line, _stack_depth)
   2285                 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
   2286             with self.builtin_trap:
-> 2287                 result = fn(*args,**kwargs)
   2288             return result
   2289 

<decorator-gen-61> in timeit(self, line, cell, local_ns)

~/miniconda3/envs/PyMotW/lib/python3.6/site-packages/IPython/core/magic.py in <lambda>(f, *a, **k)
    185     # but it's overkill for just that one bit of state.
    186     def magic_deco(arg):
--> 187         call = lambda f, *a, **k: f(*a, **k)
    188 
    189         if callable(arg):

~/miniconda3/envs/PyMotW/lib/python3.6/site-packages/IPython/core/magics/execution.py in timeit(self, line, cell, local_ns)
   1129             for index in range(0, 10):
   1130                 number = 10 ** index
-> 1131                 time_number = timer.timeit(number)
   1132                 if time_number >= 0.2:
   1133                     break

~/miniconda3/envs/PyMotW/lib/python3.6/site-packages/IPython/core/magics/execution.py in timeit(self, number)
    158         gc.disable()
    159         try:
--> 160             timing = self.inner(it, self.timer)
    161         finally:
    162             if gcold:

<magic-timeit> in inner(_it, _timer)

NameError: name 'primes' is not defined

In [ ]: