New in Python 3.12 is sys.monitoring, a lighter-weight way to monitor the execution of Python programs. Coverage.py 7.4.0 now can optionally use sys.monitoring instead of sys.settrace, the facility that has underpinned coverage.py for nearly two decades. This is a big change, both in Python and in coverage.py. It would be great if you could try it out and provide some feedback.
Using sys.monitoring should reduce the overhead of coverage measurement, often lower than 5%, but of course your timings might be different. One of the things I would like to know is what your real-world speed improvements are like.
Because the support is still a bit experimental, you need to define an
environment variable to use it: COVERAGE_CORE=sysmon
.
Eventually, sys.monitoring will be automatically used where possible, but for
now you need to explicitly request it.
Some things won’t work with sys.monitoring: plugins and dynamic contexts aren’t yet supported, though eventually they will be. Execution will be faster for line coverage, but not yet for branch coverage. Let me know how it works for you.
This has been in the works since at least March. I hope I haven’t forgotten something silly in getting it out the door.
Comments
Add a comment: