线程未加入多线程(Python)

问题描述 投票:0回答:1

所以我有一些使用多线程的简单代码。它工作得很好但是我注意到线程在返回值后没有被销毁,因为每次脚本运行时,控制台中的线程号都会增加并且正在使用的 RAM 在脚本完成处理后也会增加(哪个暗示在脚本完成处理后还有一些东西在运行)。

在研究了thisthisthisthis之后,我注意到我的线程可能没有加入(?),因为我的脚本从不打印“Threads Destroyed”。谁能建议可能出了什么问题?

if __name__ == "__main__":
def run_selenium1(a, b, c, d, e):
    
    @st.cache_data(show_spinner=False)
    def get_links(i, resumeContent):
        #stufff happens
            for something1, something2, something3, something4, something5, something6, something7 in zip(Final_Something1, Final_Something2, Final_Something3, Final_Something4, Final_Something5, Final_Something6, Final_Something7):
                Final_Array.append((something1, something2, something3, something4, something5, something6, something7))
            driver.close()
            driver.quit()
        except:
            driver.close()
            driver.quit()


    with webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) as driver:
        try:
           #links are obtained
        except:
            driver.close()
            driver.quit()

    threads = []
    for i in links:
        t = threading.Thread(target=get_links, args=(i, Content))
        t.daemon = True
        threads.append(t)
        t.start()
    for t in threads:
        t.join()
        print("Threads destroyed") #<---- this isn't printed
python multithreading selenium-webdriver multiprocessing python-multithreading
1个回答
0
投票

也许它没有打印“Threads destroyed”因为(第一个)线程没有完成?

要对此进行测试,请尝试添加线程正在完成的通知:

if __name__ == "__main__":
def run_selenium1(a, b, c, d, e):
    
    @st.cache_data(show_spinner=False)
    def get_links(i, resumeContent):
        #stufff happens
            for something1, something2, something3, something4, something5, something6, something7 in zip(Final_Something1, Final_Something2, Final_Something3, Final_Something4, Final_Something5, Final_Something6, Final_Something7):
                Final_Array.append((something1, something2, something3, something4, something5, something6, something7))
            print("About to close ",i)
            driver.close()
            driver.quit()
            print("Closed and quit ",i)
        except:
            print("Error on ",i)
            driver.close()
            driver.quit()
            print("Error closed and quit ",i)


    with webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) as driver:
        try:
           #links are obtained
        except:
            driver.close()
            driver.quit()

    threads = []
    for i in links:
        t = threading.Thread(target=get_links, args=(i, Content))
        t.daemon = True
        threads.append(t)
        t.start()
    for i,t in enumerate(threads):
        print("Trying to Join thread #",i)
        t.join()
        print("Threads destroyed") #<---- this isn't printed
© www.soinside.com 2019 - 2024. All rights reserved.