当前分类:tkinter>>正文

tkinter用多线程解决超时未响应问题

来源:互联网   更新时间:2023年6月11日  

新手用tkinter做图形化界面编程的时候,容易碰到超时未响应的情况,这个让人头痛。

我今天就遇到了这样的一个问题。

超时未响应代码:

def writer():
  data={'keywords':'tkinter这个学习怎么样?', 'wish_content_count':501,}
  url='http://apis.5118.com/ai/autoexpander' 
  headers={'Content-Type':'application/x-www-form-urlencoded', 'Authorization': yourkey, }                           
  resp=requests.post(url,headers=headers,data=data).json()

这段代码,因为向5118的一个api接口发送请求,响应比较慢,导致代码运行的时候,界面一直没有反应,鼠标点击一下,就出现了超时未响应的状况。

这种情况应该怎么办呢?

api接口响应时间通常是未知的,如果要处理好超时的情况,可以设置timeout参数,如下:

resp=requests.post(url,headers=headers,data=data,timeout=3).json()

当然,我的建议是使用多线程。将代码改成下面这样:

import threading

def writer():
   data={'keywords':'tkinter这个学习怎么样?', 'wish_content_count':501,}
   url='http://apis.5118.com/ai/autoexpander'
   headers={'Content-Type':'application/x-www-form-urlencoded', 'Authorization': yourkey, }
   def postit():                         
      resp=requests.post(url,headers=headers,data=data).json()
   t=threading.Thread(target=postit)
   t.start()

这样子即使没有响应结果,也不会出现超时未响应卡死的情况!

希望我的经验对你有帮助!

本文固定链接:https://6yhj.com/leku-p-4246.html  版权所有,转载请保留本地址!
[猜你喜欢]

标签: Tkinter示例