import timeit import contextlib @contextlib.contextmanager def ctx1(): yield
class ctx2: def __enter__(self): pass def __exit__(self, *args): pass t1 = timeit.timeit("with ctx1(): pass", setup="from __main__ import ctx1") t2 = timeit.timeit("with ctx2(): pass", setup="from __main__ import ctx2") print("%.3f secs" % t1) print("%.3f secs" % t2) print("slowdown: -%.2fx" % (t1 / t2)) ...with Python 3.5: 1.938 secs 0.443 secs slowdown: -4.37x I wanted to give it a try rewriting this in C but since @contextmanager has a lot of magic I wanted to ask first whether this 1) is technically possible 2) is desirable. Thoughts? -- Giampaolo - http://grodola.blogspot.com
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com