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


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

Re: A thread import problem

Started byBruce Sherwood <bruce.sherwood@gmail.com>
First post2012-07-21 10:11 -0600
Last post2012-07-21 10:11 -0600
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

  Re: A thread import problem Bruce Sherwood <bruce.sherwood@gmail.com> - 2012-07-21 10:11 -0600

#25748 — Re: A thread import problem

FromBruce Sherwood <bruce.sherwood@gmail.com>
Date2012-07-21 10:11 -0600
SubjectRe: A thread import problem
Message-ID<mailman.2387.1342887093.4697.python-list@python.org>
I couldn't get a simple test case to work. I append a listing of the
little test files, all in the same folder. The diagnostic statement
print('after start_new_thread\n') works, but then nothing. Originally
I tried importing testABA.py but was worried that the circular
importing (A imports B which imports A) would be a problem, hence the
test of importing a version of the test program without the import.

The failure of this test case suggests that one cannot do imports
inside secondary threads started in imported modules, something I keep
tripping over. But I hope you'll be able to tell me that I'm doing
something wrong!

Incidentally, a simple test is to execute the file ABA.py, in which
case everything works.

Bruce Sherwood

---------------------------
testABA.py -- execute this file

from ABA import *
print('exec testABA')
from math import sin
print(sin(3.14159/6))

----------------------------
testABA_noimport.py -- a version of testABA.py without the import of ABA

print('exec testABA_noimport')
from math import sin
print(sin(3.14159/6))

-----------------------------
ABA.py

from thread import start_new_thread
from time import sleep
import sys

user = 'testABA_noimport'
start_new_thread(lambda: __import__(user), ())
print('after start_new_thread\n')

while True:
    sleep(1)

On Sat, Jul 21, 2012 at 2:32 AM, Dieter Maurer <dieter@handshake.de> wrote:
> The usual approach to this situation is to invoke the user code via
> a callback from the UI main loop or invoke it explicitely
> after the UI system has been set up immediately before its main loop
> is called. Might look somehow like this:
>
> main thread:
>
> from thread import start_new_thread
> from visual import setup_gui, start_main_loop
> setup_gui() # sets up the GUI subsystem
> start_new_thread(lambda: __import__(<your module>), ())
> start_main_loop()

[toc] | [standalone]


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


csiph-web