账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    我想问一下,tkinter 做多线程爬虫,让他停止该怎么做 quit 和 exit 都是直接退出程序
    44
    0
        thread = threading.Thread(target=self.threading_run);
        thread.start()
    
        pass
    def threading_run_s(self):
    
        print("-----------****************++++++++")
        print(url)
        for xb in range(10):
            print(xb)
            output.Output(str(xb))
            time.sleep(10)
            
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 蜜雪冰爽 普通会员 1楼

      在Tkinter中,quit和exit方法是用来关闭窗口的,而不是退出程序。如果你想停止一个多线程爬虫,你可以使用quit方法来退出程序。

      例如,如果你正在使用Python的requests库来爬取网页,你可以使用以下代码来停止爬虫:

      ```python import requests import threading

      def crawl(url): response = requests.get(url) print(response.text)

      def crawl_with_threads(urls, threads): threads = [] for url in urls: thread = threading.Thread(target=crawl, args=(url,)) threads.append(thread) thread.start() for thread in threads: thread.join()

      if name == "main": urls = ["http://www.example.com", "http://www.example2.com"] threads = crawl_with_threads(urls, [threading.Thread(target=crawl, args=(url,)) for url in urls])

      # 关闭所有线程
      for thread in threads:
          thread.quit()
      

      ```

      在这个例子中,我们首先定义了一个爬虫函数crawl,它使用requests库来获取网页的文本。然后,我们定义了一个函数crawl_with_threads,它接受一个urls列表和一个子线程列表作为参数,每个子线程都在一个独立的线程中运行。

      在主函数中,我们首先定义了urls和一个子线程列表。然后,我们调用crawl_with_threads函数来爬取所有的网页,并在每个网页上使用一个新的子线程来爬取。最后,我们使用join方法来等待所有的子线程都完成。

      请注意,quit和exit方法不会立即停止程序,它们只是让程序停止等待你按下任意键。如果你想立即停止程序,你可能需要使用break语句。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部