Python tkinter GUI阻止eventlet.spawn

时间:2019-05-13 15:02:19

标签: multithreading tkinter server client eventlet

这个问题可以像这样简单地分解,如果我使用线程启动线程,然后启动我的python GUI,它就可以正常工作。但是,如果我替换为eventlet并使用eventlet.spawn然后启动我的GUI,该GUI仍然可以正常工作,但是eventlet.spawn调用的功能将无法执行。 (由于我在不同的计算机上设置客户端服务器的原因,线程会导致问题和eventlet正常工作,所以我使用的是eventlet)

对于eventlet,我用猴子在顶部用

import eventlet
eventlet.monkey_patch()

我尝试了eventlet.monkey_patch(thread = False)某些Google博客中建议的所有其他许多设置,简直是行不通的

import eventlet
import tkinter as tk
from tkinter import *
eventlet.monkey_patch()

from lib1 import func1

eventlet.spawn(func1) #while loop producing logs

root=tk.Tk()
Button(root,text='print',command=lambda:print('hello')).pack()
root.mainloop()

基本上,如果我将Eventlet替换为Thread,那很好,但是那不是我想要的,因为Thread导致客户端服务器出现问题。使用上面的代码,func1将不会生成应生成的日志。 GUI上的打印按钮可以正常工作。 我期望func1能够正确执行。

0 个答案:

没有答案