import hyper c = hyper.HTTP20Connection('twitter.com') c.request('GET', '/') r = c.getresponse() print(r.status) r.close() import http.client as http c = http.HTTPSConnection('twitter.com') c.request('GET', '/') r = c.getresponse() print(r.status) r.close() import time class Timer(object): def __init__(self): self.start = None self.end = None self.interval = None def __enter__(self): self.start = time.time() return self def __exit__(self, *args): self.end = time.time() self.interval = self.end - self.start c1 = http.HTTPSConnection('twitter.com') c2 = hyper.HTTP20Connection('twitter.com') with Timer() as t1: c1.request('GET', '/') r1 = c1.getresponse() d1 = r1.read() with Timer() as t2: c2.request('GET', '/') r2 = c2.getresponse() d2 = r2.read() c1.close() c2.close() print("HTTP/1.1 total time: {:.3f}".format(t1.interval)) print("HTTP/2 total time: {:.3f}".format(t2.interval)) headers = {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'python-requests/2.2.1 CPython/3.4.1 Windows/7'} c1 = http.HTTPSConnection('twitter.com') c2 = hyper.HTTP20Connection('twitter.com') with Timer() as t1: c1.request('GET', '/', headers=headers) r1 = c1.getresponse() d1 = r1.read() with Timer() as t2: c2.request('GET', '/', headers=headers) r2 = c2.getresponse() d2 = r2.read() c1.close() c2.close() print("HTTP/1.1 total time: {:.3f}".format(t1.interval)) print("HTTP/2 total time: {:.3f}".format(t2.interval)) import collections import re import itertools ABSOLUTE_URL_RE = re.compile(b'