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()