即使在线程中,Python 程序仍然在 KeyboardInterrupt 上停止

问题描述

我有一个程序可以从用户的个人音乐排行榜中抓取数据,然后将该数据输入到 Google 电子表格中,并且在该程序的某些时刻,例如在表格的初始设置期间,不得停止该程序无论出于何种原因,否则在尝试将数据实际输入到工作表中时它会中断。我以为我已经通过使用线程解决了这个问题,代码如下:

from threading import Thread

a = Thread(target=sheets_setup)
a.start()
a.join()

这将在 Python IDLE 中完美运行,并且会阻止代码退出,直到设置完成,即使有 KeyboardInterrupt 也是如此。但是,当将程序编译为 .exe 或在 cmd 中运行它时,程序将在键盘中断的情况下停止执行代码。但是,它仍然不会完全关闭程序,而是无限期地挂起并显示在控制台中:

Traceback (most recent call last):
  File "main.py",line 455,in <module>
    a.join()
  File "C:\python39\lib\threading.py",line 1029,in join
    self._wait_for_tstate_lock()
  File "C:\python39\lib\threading.py",line 1045,in _wait_for_tstate_lock
    elif lock.acquire(block,timeout):
KeyboardInterrupt

我认为这是因为它在一个线程中运行,但它使程序保持活动状态而不实际继续执行代码可能是这里最糟糕的情况。是否有可能让它继续执行代码直到线程完成,即使是在 KeyboardInterrupt 的情况下?

编辑:我发现了问题,它与线程无关,而是我正在运行 Selenium Webdriver 并在控制台中执行 Ctrl+C 的事实导致webdriver 关闭,即使代码会继续,也会导致错误,因为代码需要一个不再存在的 webdriver。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...