<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 14 September 2017 at 11:44, Eric Snow <span dir="ltr"><<a href="mailto:ericsnowcurrently@gmail.com" target="_blank">ericsnowcurrently@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Examples<br>
========<br>
<br>
Run isolated code<br>
-----------------<br>
<br>
::<br>
<br>
   interp = interpreters.create()<br>
   print('before')<br>
   interp.run('print("during")')<br>
   print('after')<br></blockquote><div><br></div>A few more suggestions for examples:</div><div class="gmail_quote"><br></div><div class="gmail_quote">Running a module:</div><div class="gmail_quote"><br></div><div class="gmail_quote"><div class="gmail_quote">    main_module = mod_name<br></div>    interp.run(f"import runpy; runpy.run_module({main_module!r})")</div><div class="gmail_quote"><br></div><div class="gmail_quote">Running as script (including zip archives & directories):</div><div class="gmail_quote"><br></div><div class="gmail_quote">    main_script = path_name<br></div><div class="gmail_quote">    interp.run(f"import runpy; runpy.run_path({main_script!r})")</div><div class="gmail_quote"><br></div><div class="gmail_quote">Running in a thread pool executor:</div><div class="gmail_quote"><br></div><div class="gmail_quote"><div class="gmail_quote">    interps = [interpreters.create() for i in range(5)]</div></div>
    with concurrent.futures.ThreadPoolExecutor(max_workers=len(interps)) as pool:</div><div class="gmail_extra">
        print('before')<br>
        for interp in interps:</div><div class="gmail_extra">            pool.submit(interp.run, 'print("starting"); print("stopping")'</div><div class="gmail_extra">
        print('after')</div><div class="gmail_extra"><br></div><div class="gmail_extra">That last one is prompted by the questions about the benefits of keeping the notion of an interpreter state distinct from the notion of a main thread (it allows a single "MainThread" object to be mapped to different OS level threads at different points in time, which means it's easier to combine with existing constructs for managing OS level thread pools).<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Cheers,</div><div class="gmail_extra">Nick.</div><div class="gmail_extra"><br></div><div class="gmail_extra">-- <br><div class="gmail_signature">Nick Coghlan   |   <a href="mailto:ncoghlan@gmail.com" target="_blank">ncoghlan@gmail.com</a>   |   Brisbane, Australia</div>
</div></div>