On Thu, Apr 23, 2015 at 6:34 AM, Cem Karan <cfkar...@gmail.com> wrote:
> > On Apr 23, 2015, at 1:59 AM, Steven D'Aprano < > steve+comp.lang.pyt...@pearwood.info> wrote: > > > On Thursday 23 April 2015 11:53, Cem Karan wrote: > > > >> Precisely. In order to make my simulations more realistic, I use a lot > of > >> random numbers. I can fake things by keeping the seed to the generator, > >> but if I want to do any sort of hardware in the loop simulations, then > >> that approach won't work. > > > > That's exactly why we have *pseudo* random number generators. They are > > statistically indistinguishable from "real" randomness, but repeatable > when > > needed. > > Which is why is why I mentioned keeping the seed above. The problem is > that I eventually want to do hardware in the loop, which will involve IO > between the simulation machine and the actual robots, and IO timing is > imprecise and uncontrollable. That is where not recording something > becomes lossy. That said, the mere act of trying to record everything is > going to cause timing issues, so I guess I'm over thinking things yet again. > > Thanks for the help everyone, its helped me clarify what I need to do in > my mind. > > Well, you could achieve this on Linux by using the rdiff library. Not exactly a purely Python solution, but it would give you file-based diffs. Basically, what you could do is write the first file. Then for each subsequent saves, write out the file (as a temp file) and issue shell commands (via the Python script) to calculate the diffs of the new file against the first (basis) file. Once you remove the temp files, you'd have a full first save and a set of diffs against that file. You could rehydrate any save you want by applying the diff to the basis. If you work on it a bit, you might even be able to avoid the temp file saves by using pipes in the shell command. Of course, I haven't tested this so there may be non-obvious issues with diffing between subsequent pickled saves, but it seems that it should work on the surface. Good luck! SS
-- https://mail.python.org/mailman/listinfo/python-list