【问题标题】:Python threading hanging?Python线程挂起?
【发布时间】:2014-09-15 03:23:20
【问题描述】:

我有一个 python 程序,它打开一个套接字并提取 ssl 证书。它工作得很好,但是当我针对某个 IP 范围运行它时,程序不会继续超过线程 140。有没有办法查看它为什么不继续?

这是程序的线程部分

 createdThreads = 0
    threadSplit = len(self.IP_list) / 5

        #Splitting the work up between the threads
    thread_1_list = self.IP_list[0:threadSplit]
    thread_2_list = self.IP_list[threadSplit:(threadSplit*2)]
    thread_3_list = self.IP_list[(threadSplit*2):(threadSplit*3)]
    thread_4_list = self.IP_list[(threadSplit*3):(threadSplit*4)]
    thread_5_list = self.IP_list[(threadSplit*4):(threadSplit*5)]`
    thread_6_list = self.IP_list[(threadSplit*5):]

    threadList = [] 
    for address in range(threadSplit):
        thread_1 = getCertInfo(thread_1_list[address],self)
        thread_2 = getCertInfo(thread_2_list[address],self)
        thread_3 = getCertInfo(thread_3_list[address],self)
        thread_4 = getCertInfo(thread_4_list[address],self)
        thread_5 = getCertInfo(thread_5_list[address],self)
        thread_1.start()
        thread_2.start()
        thread_3.start()
        thread_4.start()
        thread_5.start()

        thread_1.join()      
        thread_2.join()
        thread_3.join()
        thread_4.join()
        thread_5.join()

        if address == threadSplit-1:
            for address in range(len(thread_6_list)):
                thread_6 = getCertInfo(thread_6_list[address],self)
                thread_6.start()
                thread_6.join()

【问题讨论】:

    标签: python multithreading sockets ssl


    【解决方案1】:

    我不知道为什么它不起作用,但我写了一个module,您可以在文件开头导入:

    import hanging_threads # https://gist.github.com/niccokunzmann/6038331
    

    它会告诉你线程挂在哪里,你可以进一步调试。

    【讨论】:

    • 我只是将你的脚本添加到 python 的 site-packages 文件夹吗?
    • 是的,你可以这样做。
    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    相关资源
    最近更新 更多