Deadlocking IDLE under Win32

Mark Hammond mhammond at skippinet.com.au
Tue Apr 11 20:19:20 EDT 2000


My guess is that the "print" under IDLE is not thread-safe.  Change the
program to not print (or to append items to a queue, which the main thread
then prints) and see if this is the problem.

If so, consider submitting a patch to IDLE.  In Pythonwin, the
sys.stdout.write function checks if it is the main thread, and if not
simply queues the output (module Queue) for the main thread to print.

[This may also explain why I see the threading test hang when running the
Python test suite under IDLE]

Mark.

"James "Wez" Weatherall" <jnw22 at cam.ac.uk> wrote in message
news:8cuudo$8pj$1 at pegasus.csx.cam.ac.uk...
> I've noticed a bug with which a simple multithreaded test program such
as:
>
> import threading
>
> class MyThread(threading.Thread):
>     def run(self):
>         while self.a < 1000:
>             print self.a,
>             self.a=self.a+2
>
> thread1=MyThread()
> thread2=MyThread()
> thread1.a, thread2.a = 0, 1
> thread1.start()
> thread2.start()
>
> This program will print out about twenty numbers and then hang the whole
> interpreter if you run it from IDLE but it runs fine from the
command-line
> version, suggesting some locking problem in the Tk-based print command.
>
> Does anyone have any ideas about this?
>
> Cheers,
>
> --
> James "Wez" Weatherall
>
>
>





More information about the Python-list mailing list