Have you checked how much overhead the two functions have? That seems like an obvious way this proposal could go south.
> On 24 Mar 2019, at 13:15, Giampaolo Rodola' <g.rod...@gmail.com> wrote: > > It turns out we could use resource.getrusage() which provides micro > seconds (tested on Linux and macOS): > > import os, resource > for x in range(10000000): # warm up > pass > for x in range(5): > a = os.times() > b = resource.getrusage(resource.RUSAGE_SELF) > print(a.user, a.system) > print(b.ru_utime, b.ru_stime) > > ...it prints: > > 0.39 0.01 > 0.394841 0.011963999999999999 > 0.39 0.01 > 0.394899 0.011966 > 0.39 0.01 > 0.394908 0.011966 > 0.39 0.01 > 0.394936 0.011967 > 0.39 0.01 > 0.394963 0.011968 > > getrusage(RUSAGE_CHILDREN) can be used to calculate "children_user" > and "children_system". I see 2 possibilities here: > > 1) doc fix, mentioning that resource.getrusage provides a better resolution > 2) if available (it should always be as it's a POSIX standard), just > use getrusage in Modules/posixmodule.c. It seems we can check > availability by reusing HAVE_SYS_RESOURCE_H and HAVE_SYS_TIME_H > definitions which are already in place. > > I'm not sure what's best to do as os.* functions usually expose the > original C function with the same name, but given that "elapsed" field > is not part of times(2) struct and that on Windows "elapsed", > "children_user" and "children_system" are set to 0 it appears there > may be some space for flexibility here. > > Thoughts? > > -- > Giampaolo - http://grodola.blogspot.com > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/