Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #111715 > unrolled thread

Technique for safely reloading dynamically generated module

Started byMalcolm Greene <python@bdurham.com>
First post2016-07-21 10:42 -0400
Last post2016-07-21 10:42 -0400
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Technique for safely reloading dynamically generated module Malcolm Greene <python@bdurham.com> - 2016-07-21 10:42 -0400

#111715 — Technique for safely reloading dynamically generated module

FromMalcolm Greene <python@bdurham.com>
Date2016-07-21 10:42 -0400
SubjectTechnique for safely reloading dynamically generated module
Message-ID<mailman.25.1469112144.22221.python-list@python.org>
We're designing a server application that parses a custom DSL (domain
specific language) source file, generates a Python module with the
associated logic, and runs the associated code. Since this is a server
application, we need to reload the module after each regeneration. Is
this process is simple as the following pseudo code or are there other
issues we need to be aware of? Are there better techniques for this
workflow (eval, compile, etc)?
 
We're working in Python 3.5.1.

import importlib
 
# custom_code is the module our code will generate - a version of this
# file will always be present
# if custom_code.py is missing, a blank version of this file is created
# before this step
import custom_code
 
while True:
    # (re)generates custom_code.py visible in sys.path
   generate_custom_code( source_file )
 
   # reload the module whose source we just generated
   importlib.reload( custom_code )
 
   # run the main code in generated module
   custom_code.go()
 
Thank you,
Malcolm
 

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web