首页 > 解决方案 > 如何处理线程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 中遇到异常时,线程中断而不是捕获异常。我进行了很多搜索,但发现的解决方案很少,但这些超出了我的知识范围。

标签: pythonmultithreadingpython-multithreading

解决方案


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)

推荐阅读