Python time.clock calls C function clock (3) - man clock should confirm that it should work on BSD, so I don't know why it does not work for you. Perhaps you can try to get around this apparent error in your Python port using ctypes to directly call the clock function from the System C library (if you specified the library as .so / .dynlib / .dll or any dynamic shared libraries are called on FreeBSD)?
time.time should be very high resolution, BTW, since inside it calls gettimeofday (well, in correctly built Python, anyway) - what resolution do you observe for it on your system?
Edit : here is wat.c , a special BSD extension (tested only on my Mac - sorry, but I don't have another BSD flavor that knows well) to get around this obvious FreeBSD port problem:
#include "Python.h" #include <sys/time.h> static PyObject * wat_time(PyObject *self, PyObject *args) { struct timeval t; if (gettimeofday(&t, (struct timezone *)NULL) == 0) { double result = (double)t.tv_sec + t.tv_usec*0.000001; return PyFloat_FromDouble(result); } return PyErr_SetFromErrno(PyExc_OSError); } static PyMethodDef wat_methods[] = { {"time", wat_time, METH_VARARGS, PyDoc_STR("time() -> microseconds since epoch")}, {NULL, NULL} /* sentinel */ }; PyDoc_STRVAR(wat_module_doc, "Workaround for time.time issues on FreeBsd."); PyMODINIT_FUNC initwat(void) { Py_InitModule3("wat", wat_methods, wat_module_doc); }
And here setup.py put in the same directory:
from distutils.core import setup, Extension setup (name = "wat", version = "0.1", maintainer = "Alex Martelli", maintainer_email = "aleaxit@gmail.com", url = "http://www.aleax.it/wat.zip", description = "WorkAround for Time in FreeBSD", ext_modules = [Extension('wat', sources=['wat.c'])], )
The URL is correct, so you can also get these two files encrypted here .
To create and install this extension, python setup.py install (if you have write permission in your Python installation) or python setup.py build_ext -i to write wat.so in the very directory where you put the sources (and then manually move it wherever you want, but first try, for example, using python -c'import wat; print repr(wat.time())' in the same directory in which you created it).
Please let me know how this works on FreeBSD (or any other Unix style with gettimeofday ! -) - if the C compiler complains about gettimeofday , you may be on a system that does not want to see its second argument, try without it! -).