[Python-Dev] bpo-33257: seeking advice & approval on the course of action (original) (raw)
Chris Barker chris.barker at noaa.gov
Mon May 14 12:20:01 EDT 2018
- Previous message (by thread): [Python-Dev] bpo-33257: seeking advice & approval on the course of action
- Next message (by thread): [Python-Dev] bpo-33257: seeking advice & approval on the course of action
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, May 2, 2018 at 8:21 PM, Terry Reedy <tjreedy at udel.edu> wrote:
On 5/2/2018 4:38 PM, Ivan Pozdeev via Python-Dev wrote:
The bottom line is: Tkinter is currently broken
This is way over-stated. Many modules have bugs, somethings in features more central to their main purpose.
I'll suggest a re-statement:
tkinter is not thread safe, and yet it is documented as being thread safe (or at least not documented as NOT being thread safe)
This is either a bug(s) in the implementation or the docs.
So what are the solutions?
fix the docs -- unless tkInter is made thread safe really soon, and fixes are back-ported, this seems like a no brainer -- at least temporarily.
fix the issues that make tkInter not thread safe -- apparently there is a thread safe tcl/tk, so it should be possible, though I have to say I'm really surprised that that's the case for an old C code base -- but great!
The problem here is that we'll need qualified people to submit and review the code, and it really should get some extensive testing -- that's a lot of work.
And it's going to take time, so see (1) above.
Another issue:
Many GUI toolkits are not thread safe (I have personal experience with wxPython), so it's not so bad to simply say "don't do that" for tkInter -- that is, don't make tkInter calls from more than one thread.
However, wxPython (for example) makes this not-too-bad for multi-threaded programs by providing thread-safe ways to put events on the event queue -- whether with wx.PostEvent, or the utilities wx.CallAfter() and wx.CallLater(). This makes it pretty easy to keep the GUI in one thread while taking advantage of threads for long running tasks, etc.
IIUC, tkinter does not have such an easy way to interact with the GUI from another thread -- so maybe adding that would be a good first step.
I neither use tkinter, nor have the expertise to contribute this -- but clearly Ivan does -- and maybe others would want to help.
-CHB
--
Christopher Barker, Ph.D. Oceanographer
Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20180514/95fd07d1/attachment.html>
- Previous message (by thread): [Python-Dev] bpo-33257: seeking advice & approval on the course of action
- Next message (by thread): [Python-Dev] bpo-33257: seeking advice & approval on the course of action
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]