multiprocessing

In the following example numbers are tested whether they are prime. The function main_map_mp() uses the module multiprocessing. The output shows that muliprocessing overtakes sequential processing somewhere between 1000 and 10000.

#!/usr/bin/env python

import multiprocessing
import time
import math

def isPrime( x):
    last = int(math.ceil( math.sqrt( x))) + 1
    if int(x) == 2:
        return True
    for i in range( 2, last):
        if int(x) % i == 0:
            return False
    return True

def main_map_mp():
    startTime = time.time()
    numbers = range(1, MAX)
    p      = multiprocessing.Pool(multiprocessing.cpu_count())
    lst   = zip( numbers,p.map(isPrime, numbers))
    print( "main_map_mp: time used %g" % (time.time() - startTime))

def main_map():
    startTime = time.time()
    numbers = range(1, MAX)
    lst   = zip( numbers,map(isPrime, numbers))
    print( "main_map:    time used %g" % (time.time() - startTime))

if __name__ == "__main__":
    MAX = 100
    print( "MAX", MAX)
    main_map_mp()
    main_map()
    MAX = 1000
    print( "MAX", MAX)
    main_map_mp()
    main_map()
    MAX = 10000
    print( "MAX", MAX)
    main_map_mp()
    main_map()

Output: 
MAX 100
main_map_mp: time used 0.0133471
main_map:    time used 0.000174046
MAX 1000
main_map_mp: time used 0.00520396
main_map:    time used 0.00217819
MAX 10000
main_map_mp: time used 0.0190139
main_map:    time used 0.0353339