python - 如何处理线程Python中的异常
问题描述
我有两个线程正在调用一个函数,而该函数又创建了一个线程。
def run(urls):
while len(urls) != 0:
t3 = threading.Thread(target=scrap_matches, args=(urls[-1],))
try:
print("URL left", threading.currentThread().getName(), len(urls))
t3.start()
del urls[-1]
except:
print("Got Exception")
part_1, part_2 = parse(urls)
print(part_1)
print(part_2)
t1 = threading.Thread(target=run, args=(part_1,))
t2 = threading.Thread(target=run, args=(part_2,))
t1.start()
t2.start()
t1.join()
t2.join()
part_1 和 part_2 是列表。当我在函数 scrap_matches 中遇到异常时,线程中断而不是捕获异常。我进行了很多搜索,但发现的解决方案很少,但这些超出了我的知识范围。
解决方案
from concurrent.futures import ThreadPoolExecutor:
threads = []
with ThreadPoolExecutor() as executer:
t1 = executer.submit(run, part_1)
t2 = executer.submit(rn, part_2)
threads.append(t1)
threads.append(t2)
for thread in threads:
try:
thread.result()
except ValueError as err:
print(err)
推荐阅读
- r - 我无法在 R 上安装任何软件包
- qt - 如何在 qt 5(任何特定版本)中通过 QObject::setProperty 使用 QVariant 设置枚举属性(从 xml 文本节点获取值)
- r - 从多层 tiff 文件中提取波段作为单独的层
- r - 使用 + 和 x 的参数值创建 pchs 向量
- android - 我想在另一个活动中将视频发送到视频视图但崩溃
- c# - c#程序将tcp端口13000转发到rdp端口3389?
- python - Python tkinter:从主窗口一次只打开一个实例
- flutter - 我想显示所有类别,但它只显示我正在加载并且它一直在加载
- loops - 使用变量重复相同的场景
- android - Junit测试Rxjava方法