In [ ]:
import math

def pycheck_opt(p):
    for y in range(2,int(math.sqrt(p))+1):
        if p%y==0:
            return None
    return p

def primes(n):
    lst = [pycheck_opt(x) for x in range(2, n)]
    return  len([v for v in lst if v])

In [ ]:
%%file mp.py
import multiprocessing
import os
import math
import sys

def pycheck_opt(p):
    for y in range(2,int(math.sqrt(p))+1):
        if p%y==0:
            return None
    return p


if __name__ == "__main__":
    pool = multiprocessing.Pool(processes=4)
    lst = pool.map(pycheck_opt, range(2,int(sys.argv[1]))).get()
    print len([v for v in lst if v])

In [ ]:
import subprocess
def run(script_file):
    print subprocess.Popen('python %s' % script_file, stdout=subprocess.PIPE).communicate()[0]

In [ ]:
n = 1000
print primes(n)
run('mp.py %s'%n)

In [ ]:
n = 10000
%timeit primes(n)
%timeit run('mp.py %s'%n)

In [ ]:
n = 1000000
%timeit primes(n)
%timeit run('mp.py %s'%n)

In [ ]: