Add files via upload

This commit is contained in:
Mateusz779 2021-08-25 15:10:00 +02:00 committed by GitHub
parent 44cef0dba6
commit c89f1c9b51
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

53
BBP multithreading.py Normal file
View File

@ -0,0 +1,53 @@
from decimal import Decimal
from decimal import getcontext
import time
from multiprocessing.dummy import Pool as Pool #pip3 install multiproces
from tqdm import tqdm #pip3 install tqdm
threads=4 #threads number
count = 10000 #number of numbers after the point
thread_list = []
count=count+1
list_all = {}
pbar = tqdm(total =count)
def pi(start):
getcontext().prec=count-start
for k in range (start,int(start+one_count)):
pbar.update(1)
list_all[k]=(1/Decimal(16)**k * (Decimal(4)/(8*k+1) - Decimal(2)/(8*k+4) - Decimal(1)/(8*k+5) - Decimal(1)/(8*k+6)))
start_table = []
if count >500:
th=int(threads*(count/1000))
else:
th=1
while count%th!=0:
if count>th:
th=th+1
else:
th=th-1
one_count=int(count/th)
for i in range(th):
start_table.append(int((one_count*i)))
start = time.time()
with Pool(processes=threads) as pool:
results = pool.starmap(
pi,
iterable=zip(start_table),
chunksize=100000 // threads
)
end = time.time()
result=0
getcontext().prec=count
sort = sorted(list_all.items())
for i in sort:
result=result+i[1]
print(Decimal(result))
print("\n\n")
print("Elapsed time: ",end - start,"s\n")