Skip to content

Instantly share code, notes, and snippets.

Created March 14, 2012 12:02
Show Gist options
  • Save amitsaha/2036026 to your computer and use it in GitHub Desktop.
Save amitsaha/2036026 to your computer and use it in GitHub Desktop.
Parallel Pi Calculation using Python's multiprocessing module
''' listing 6:
Multiprocessing based code to estimate the value of PI
using monte carlo sampling
Uses workers:
import random
import multiprocessing
from multiprocessing import Pool
#caculate the number of points in the unit circle
#out of n points
def monte_carlo_pi_part(n):
count = 0
for i in range(n):
# if it is within the unit circle
if x*x + y*y <= 1:
return count
if __name__=='__main__':
np = multiprocessing.cpu_count()
print 'You have {0:1d} CPUs'.format(np)
# Nummber of points to use for the Pi estimation
n = 10000000
# iterable with a list of points to generate in each worker
# each worker process gets n/np number of points to calculate Pi from
part_count=[n/np for i in range(np)]
#Create the worker pool
pool = Pool(processes=np)
# parallel map, part_count)
print "Esitmated value of Pi:: ", sum(count)/(n*1.0)*4
Copy link

zjuchenyuan commented Nov 4, 2017

for #L43, this may better for understanding:

part_count = [n/np] * np

Copy link

lukateras commented Feb 1, 2019

Rust implementation with pre-determined lightweight RNGs:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment