Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #25748
| References | <CA+WuaScBDU_5LcrCrTtDr6N3gHCk9hQ03fA=DT359GCRY=a=KQ@mail.gmail.com> <CA+WuaSeRExxaD9yCNWhXoWqsV_ZqP8DOvdErMRdNS-H_UtzQyg@mail.gmail.com> <87a9yt7bw6.fsf@handshake.de> |
|---|---|
| Date | 2012-07-21 10:11 -0600 |
| Subject | Re: A thread import problem |
| From | Bruce Sherwood <bruce.sherwood@gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.2387.1342887093.4697.python-list@python.org> (permalink) |
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()
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: A thread import problem Bruce Sherwood <bruce.sherwood@gmail.com> - 2012-07-21 10:11 -0600
csiph-web