blog_projekty/obliczanie_pi/python/main.py

45 lines
1.1 KiB
Python
Raw Permalink Normal View History

2024-11-04 09:30:41 +00:00
from flask import Flask, jsonify, request
import time
from flask_cors import CORS
from decimal import Decimal, getcontext
app = Flask(__name__)
CORS(app)
def calculate_pi(n):
getcontext().prec = n * 14
pi = Decimal(0)
k = Decimal(0)
x = Decimal(1)
sixteen = Decimal(16)
for i in range(n):
pi += (Decimal(4) / (8*k + 1) -
Decimal(2) / (8*k + 4) -
Decimal(1) / (8*k + 5) -
Decimal(1) / (8*k + 6)) * x
k += 1
x /= 16
return pi
@app.route('/pi')
def get_pi():
try:
precision = int(request.args.get('precision', 10))
start_time = time.time()
pi = calculate_pi(precision)
duration = (time.time() - start_time)*1000
return jsonify({
'pi': f"{pi:.{precision}f}",
'time': f"{duration:.6f}ms",
'language': 'Python'
})
except ValueError:
return jsonify({'error': 'Invalid precision parameter'}), 400
if __name__ == '__main__':
print("Python server starting on port 8082...")
app.run(port=8082)