JamesHutchison / pytest-hot-reloading

A hot reloading pytest daemon, implemented as a plugin
MIT License
86 stars 2 forks source link

Add throttling to file system polling and reduce CPU usage on default setting, remove watchman references #83

Closed JamesHutchison closed 7 months ago

JamesHutchison commented 7 months ago

Jurigged does not use watchman, it uses watchdog. Watchdog does not use watchman.

I investigated using watchfiles and it didn't provide enough benefits to merit switching. It added a bit of code complexity to conform to the interface that jurigged was expecting and even then it created bug hazards.

The watchfiles branch is here, for reference: https://github.com/JamesHutchison/pytest-hot-reloading/tree/watchfiles

This fixes the references to watchman to now say "OS events", it also adds the capability to throttle the file system polling done by jurigged to reduce idle cpu usage. Lower numbers are faster. The default values now increase the polling interval to 2 seconds instead of 1, and adds a small 2 ms delay before each listdir. Both of these are affected by the throttle, so for example, a value of 0.5 brings the delay back to 1 second and reduces the listdir delay to 1ms.

The default changes reduce the idle CPU usage by approx half. In Heavy Resume this reduced the idle from 10 - 12% to 4 - 6% with the debugger on.

Addresses #80

github-actions[bot] commented 7 months ago

Ptyme Track total time logged: JamesHutchison: 4:34:07 [4:34:07 across all branches]