1
$\begingroup$

I am looking for the most efficient way to save data from one run of a python script to the next. My script generates a list , say presentList . The list is made up of a number of integers. Next time the script runs I want to use that list again as previousList. I would prefer that this data be written and read from memory rather than disk since my script runs quite often and I don't want to write so often to my disk. Can I use pickle with BytesIO to accomplish this? I am also using Animation Nodes. Perhaps there is a way to send the list to and from Animation Nodes to make the data persistent? Thanks for any advice on this. Perhaps this would be better asked on a python forum.

$\endgroup$
  • $\begingroup$ This question seems to get pretty close to yours: blender.stackexchange.com/questions/103233/… $\endgroup$ – WhatAMesh Feb 26 at 9:24
  • $\begingroup$ @brockmann the data is just a list of integers. $\endgroup$ – Jim Ruxton Feb 26 at 9:27
  • 2
    $\begingroup$ Possible duplicate of How to store particle locations in a list? $\endgroup$ – Omar Emara Feb 26 at 11:45
  • $\begingroup$ Cant you just use a custom attribute? should be memory based. Can be made on a collection or something $\endgroup$ – Jackdaw Feb 26 at 12:56
  • $\begingroup$ Thanks @OmarAhmad Tthis may work. I was hoping for an all python solution but if I can do it in animation nondes that would be great too. $\endgroup$ – Jim Ruxton Mar 1 at 8:13
1
$\begingroup$

Based on the comment Omar posted I found that I could simply use the python statements setattr() to save my list and getattr() to retrieve it. In this case I stored the list as an attribute in animation_nodes as shown in Omar's example however I assume I could have stored it in any object in my scene. This allowed me to have data persist between running instances of my python script,

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.