python - Using multiprocessing to utilize all cores of the CPU -
i trying calculate number of floating point operations per second cpu can perform, wrote following program:
import time import sys multiprocessing import process numofloops = 10000000 if (len(sys.argv) != 2): print "correct usage: python cpu.py 'no_of_processes'" sys.exit() #function each process def fpops(): = float(0.0) in xrange(0, numofloops): += 0.5 #print #for debugging purpose processes = [] numofprocesses = int(sys.argv[1]) numofops = numofloops * numofprocesses in xrange(0, numofprocesses): processes.append(process(target=fpops)) start = time.time() process in processes: process.start() process in processes: process.join() end = time.time() exectime = end - start print "exec time " , exectime flops = (float(numofops/exectime)) print "flops : " , flops
the program calculates time (exectime) takes perform 'n' number of floating point operations , 'n / exectime' gives me flops value want.
but, flops value decreases increase number processes. expecting reduce since processes performing more number of operations per second because run in parallel. doing wrong??
Comments
Post a Comment