If some_function is just 2**i then numpy could speed thing up for you. You'd just call numpy.power:
import numpy as np
elements = np.power(2, range(10000))
As suggested by Benoit Descamps before me, you could speed things up even further when using multiprocessing.
from multiprocessing import Pool
def f(x):
  return x**2
p = Pool(5)
p.map(f, range(10000))
Comparison
multiprocessing VS numpy VS map VS for-loop
$ echo -e "from multiprocessing import Pool\ndef f(x):\n  return x**2\np = Pool(5)\np.map(f, range(10000))" | python -m timeit -n 1000
1000 loops, best of 5: 4.83 nsec per loop
$ python -m timeit -n 1000 'import numpy as np; np.power(2, range(10000))'
1000 loops, best of 5: 1.09 msec per loop
$ python -m timeit -n 1000 'list(map(lambda v: v**2, range(10000)))'
1000 loops, best of 5: 2.07 msec per loop
$ python -m timeit -n 1000 'import numpy as np; [np.power(2, i) for i in range(10000)]'
1000 loops, best of 5: 8.92 msec per loop
     
    
some_function6 million times there is no faster way.