you have to run them per frame to get it right. So I'm not sure how well a thread running outside the main loop could be made aware of the passage of time inside the main loop, or with what precision that could be established after the fact.
the main thread could set flags/variables to communicate the duration of a frame, i.e. time spent creating it - i.e. using the equivalent of several systime() calls, and appending those to a vector with timestamps and calculations to be executed.
IIRC, systime() is using SGTimeStamp internally, which shouldn't be using the event manager.
There also is some kind /frame property and various /time properties that could be gathered and put into such data structure, which would then be accessible from the other/worker thread.
Regarding the precision of systime(), that may indeed be an issue - Richard recently mentioned that there are some OS specifics, e.g. on Windows.
Anyway, if Nasal is not a good tool for the job, I can help you come up with C++ code to do what is needed - either in the form of additional property-rule features or via a dedicated C++ SGSubsystem.
PS: The "ready concept" (wiki) is indeed very overloaded - I think Michat introduced this one, at least he contributed many/most icons.