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