当前位置: 首页 > 面试题库 >

Python线程挂了吗?

宿淳
2023-03-14
问题内容

我有一个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()

问题答案:

我不知道为什么它不起作用,但是我编写了一个模块,可以在文件的开头导入该模块:

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

它将显示线程挂起的位置,您可以进一步调试。



 类似资料:
  • 问题内容: 我正在尝试的代码 我们如何根据其ID暂停/暂停线程?Thread.suspend已过时,必须有一些替代方法来实现。我有线程ID,我想挂起并杀死线程。 编辑:我用这个。 但是我无法停止该线程。 问题答案: 这些天杀死线程的正确方法就是使用它。这集真和原因,以及一些其他的方法来扔。 在线程代码内部,您应该执行类似以下的操作,检查以确保它没有被中断。 这是一个如何在线程内部处理中断异常的示例

  • 问题内容: 我有一个运行时间较长的python应用程序,它将定期(每30-60秒)打开一个包含selenium和chrome驱动程序的网页,运行一些javascript并截图。它在Xvfb中带有chrome的EC2 ubuntu实例上运行,并且在大多数情况下一切正常,除非程序会间歇性地挂起。它发生在以下行之一: (我没有确切的一行,但我从调试语句中知道,它位于此处之间的某处) 不幸的是,该程序不会

  • 问题内容: 我尝试完成的任务是流式处理ruby文件并打印输出。(注意:我不想一次打印出所有内容) main.py puts “hello” 问题 流文件工作正常。打招呼/再见输出将延迟2秒打印。就像脚本应该工作一样。问题是readline()最终挂起并且永不退出。我从来没有达到最后的打印。 我知道这里有很多类似的问题,但是这些都不是让我解决问题的方法。我并不是整个子流程中的人,所以请给我一个更实际

  • 问题内容: 我有一个Python程序,当我使用退出应用程序时 ,脚本不会关闭。我的过程仍显示在运行的过程中。 为什么python线程不能关闭? 问题答案: 您需要将该线程设为守护程序线程。为此,请在调用线程的init之后添加以下行 当只有守护程序线程处于活动状态时,程序将退出,主线程当然是非守护程序的

  • 问题内容: 与此问题相关,我有以下代码可订阅redispubsub队列,并使用__init__中提供的处理程序将消息提供给处理它们的类: 在上面的链接问题中,请注意,如果断开连接,则永不返回。因此,尽管我的函数可以被调用,但它实际上不会导致线程终止,因为它挂在对线程内部的调用上。 链接问题的可接受答案提到了黑客入侵redis-py的连接池。我真的不想这样做,并且有一个分支版本的redis- py(