import math
import multiprocessing as m
import time
threadCount = 8
maxNum = 10 ** 7
startTime = time.time()
total = 0
result_list = []
def log_results(result):
result_list.append(result)
def calculate(start, end):
temp = 0
for d in range(start, end):
temp = temp + (1/d) ** 2
return temp
if __name__ == '__main__':
pool = m.Pool()
for threads in range(0, threadCount):
pool.apply_async(calculate, args = (round(maxNum/threadCount*threads)+1, round(maxNum/threadCount*(threads+1)),), callback = log_results)
pool.close()
pool.join()
total = sum(result_list)
print("\nFinished in " + str(round(time.time() - startTime)) + " seconds")
print("Pi: " + str(math.sqrt(total * 6)))
aW1wb3J0IG1hdGgKaW1wb3J0IG11bHRpcHJvY2Vzc2luZyBhcyBtCmltcG9ydCB0aW1lCgp0aHJlYWRDb3VudCA9IDgKbWF4TnVtID0gMTAgKiogNwoKc3RhcnRUaW1lID0gdGltZS50aW1lKCkKdG90YWwgPSAwCgpyZXN1bHRfbGlzdCA9IFtdCmRlZiBsb2dfcmVzdWx0cyhyZXN1bHQpOgogICAgcmVzdWx0X2xpc3QuYXBwZW5kKHJlc3VsdCkKCmRlZiBjYWxjdWxhdGUoc3RhcnQsIGVuZCk6CiAgICB0ZW1wID0gMAogICAgZm9yIGQgaW4gcmFuZ2Uoc3RhcnQsIGVuZCk6CiAgICAgICAgdGVtcCA9IHRlbXAgKyAoMS9kKSAqKiAyCiAgICByZXR1cm4gdGVtcAoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIHBvb2wgPSBtLlBvb2woKQogICAgZm9yIHRocmVhZHMgaW4gcmFuZ2UoMCwgdGhyZWFkQ291bnQpOgogICAgICAgIHBvb2wuYXBwbHlfYXN5bmMoY2FsY3VsYXRlLCBhcmdzID0gKHJvdW5kKG1heE51bS90aHJlYWRDb3VudCp0aHJlYWRzKSsxLCByb3VuZChtYXhOdW0vdGhyZWFkQ291bnQqKHRocmVhZHMrMSkpLCksIGNhbGxiYWNrID0gbG9nX3Jlc3VsdHMpCiAgICBwb29sLmNsb3NlKCkKICAgIHBvb2wuam9pbigpCgogICAgdG90YWwgPSBzdW0ocmVzdWx0X2xpc3QpCgogICAgcHJpbnQoIlxuRmluaXNoZWQgaW4gIiArIHN0cihyb3VuZCh0aW1lLnRpbWUoKSAtIHN0YXJ0VGltZSkpICsgIiBzZWNvbmRzIikKICAgIHByaW50KCJQaTogIiArIHN0cihtYXRoLnNxcnQodG90YWwgKiA2KSkp