pythontk多线程_tkinter是否线程安全(threadsafe)?
python標準的GUI庫,tkinter,到底是不是線程安全的(threadsafe)?本文給出答案。可以這么說:現在新安裝的python,自帶的tkinter都是線程安全的,以前的不一定是!
什么是線程安全?
我們可以這么簡單的來理解,多個線程訪問時,不需要自己顯示的做線程同步,模塊自己內部已經做了多線程保護,這就是線程安全。比如多個線程都在想Text控件輸出內容,如果Text控件不是線程安全,多線程就需要自己做同步,比如加鎖解鎖這樣的操作,而如果Text控件本身就是線程安全的,多線程就不需要這么麻煩了。
線程安全,也可以說成,支持線程!
關于tkinter庫是否線程安全,baidu幾乎找不到什么有用的信息,看來國人不太關心這個細節。用bing一下子就找到了問題的答案!)、(https://bugs.python.org/issue11077,看最后一個msg;https://bugs.python.org/issue33479)
tkinter模塊的基礎是tcl/tk,它有兩種編譯方式,支持線程或不支持線程。tkinter從8.6版本開始,默認的編譯方式就是支持線程,即線程安全。
不確定python3從哪個版本開始使用tkinter 8.6版本,我這里3.6.5已經是了。Win系統還有一個判斷方法,到python的安裝路徑中,去找tcl/tk的dll文件,如果右面帶一個小t(thread),即是線程安全的。如下圖:
tcl/tk8.6線程安全版
Linux下python3,我是編譯安裝的,編譯過程沒有修改過tkinter模塊的任何參數,默認應該就是線程安全的。
查看你的python中tkinter模塊對應的tcl/tk版本號:
>>> import tkinter
>>> tkinter.TclVersion
8.6
>>> tkinter.TkVersion
8.6
python官方也宣稱tkinter是線程安全的,https://docs.python.org/3/library/tk.html,第二段的最后一句。
-- EOF --
總結
以上是生活随笔為你收集整理的pythontk多线程_tkinter是否线程安全(threadsafe)?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兼谈国产操作系统的收费困境兼谈国产操作系
- 下一篇: 批量删除文件名中的相同字符批量删除文件名