diff --git a/benchmark_simple.py b/benchmark_simple.py index e69de29..51dcd8f 100644 --- a/benchmark_simple.py +++ b/benchmark_simple.py @@ -0,0 +1,66 @@ +import sys +import multiprocessing +import time + + +def independent_worker(result_queue): + import pycurl + + + prepared_curl = pycurl.Curl() + prepared_curl.setopt(pycurl.URL, "https://birb.k8s.kmlabz.com/benchmark") + prepared_curl.setopt(pycurl.SSL_VERIFYPEER, 0) + prepared_curl.setopt(pycurl.SSL_VERIFYHOST, 0) + # prepared_curl.setopt(pycurl.FORBID_REUSE, 0) + prepared_curl.setopt(pycurl.HTTP_VERSION, pycurl.CURL_HTTP_VERSION_2_0) + prepared_curl.setopt(pycurl.WRITEFUNCTION, lambda data: None) + + start_time = time.time() + stop_time = 0 + count = 0 + + while True: + prepared_curl.perform() + + count += 1 + + if count % 50 == 0: + if (time.time() - start_time) >= 10: + stop_time = time.time() + break + + runtime = stop_time - start_time + + prepared_curl.close() + + result_queue.put((runtime, count)) + + +def main(): + num_workers = int(sys.argv[1]) + + result_queue = multiprocessing.Queue() + + workers = [] + for _ in range(num_workers): + workers.append(multiprocessing.Process(target=independent_worker, args=(result_queue,))) + + for w in workers: + w.start() + + for w in workers: + w.join() + + total_requests_sent = 0 + print("Completed requests for each worker:") + while not result_queue.empty(): + requests_sent = result_queue.get() + print('-', requests_sent[1], 'req ', requests_sent[0], 'sec') + total_requests_sent += requests_sent[1] + + print("Total completed requests:", total_requests_sent) + print(total_requests_sent / 10, "req/s") + + +if __name__ == '__main__': + main()