1

Say you have a config.py which inside has

settings = read_yaml('settings.yaml')

so config.settings is a dictionary.

in one script foo.py you have:

import config
config.settings['foo'] = str(time.time())
write_yaml('settings.yaml', config.settings)

and in another script bar.py you have

import config
while True:
    sleep(10)
    print config.settings['foo']

How would you keep the printed value in bar.py up to date with the new value after running foo.py at any time without the obvious reading the file again seeing as the while loop in bar.py needs to be as quick as possible!

I currently run these on seperate bash threads i.e:

$ python bar.py
$ python foo.py

But I could run bar in a thread if that is possible?

finefoot
  • 9,914
  • 7
  • 59
  • 102
maxisme
  • 3,974
  • 9
  • 47
  • 97

1 Answers1

2

I don't know how fast you need this to be. But it would certainly be possible to just reload the config module with importlib.reload. So config.py and foo.py stay the same and your bar.py changes to:

import importlib
import config

while True:
    print config.settings['foo']
    sleep(10)
    importlib.reload(config)

Update

The example above works for Python >= 3.4, use imp.reload for earlier versions of Python 3 or reload for Python 2.

finefoot
  • 9,914
  • 7
  • 59
  • 102