Python:示例说明。。。为什么这样做有效?

Python:示例说明。。。为什么这样做有效?,python,multithreading,oop,class,Python,Multithreading,Oop,Class,我已经在python上混了一段时间,最近我想出了一些涉及多线程的东西。。。不用再麻烦了。。。这是我所拥有的 import pythoncom import wmi import threading class Info(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): pythoncom.CoInitialize()

我已经在python上混了一段时间,最近我想出了一些涉及多线程的东西。。。不用再麻烦了。。。这是我所拥有的

import pythoncom
import wmi
import threading

class Info(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
    def run(self):
        pythoncom.CoInitialize()
        c = wmi.WMI()
        detect = c.Win32_ComputerShutdownEvent.watch_for()
        detect()
        return

if __name__ == '__main__':
    Info().start()
    for process in c.Win32_Process(Name="something.exe"):
        result = process.Terminate()
所以我的问题是。。。为什么这样做有效?这可能是一个关于线程继承过程的整体问题。。。但是类Info()中没有start()定义,那么为什么要开始运行定义呢


这实际上是一个非常方便的应用程序,我需要使用它来停止windows关闭时似乎总是挂起的应用程序。。。查找windows关闭事件发生的时间有点令人头痛,但幸运的是tim golden的杰作挽救了这一天

线程的
子类
在对它们调用
start()
时,会自动调用它们的
run()
。开始在
线程中定义

指定活动有两种方法:将可调用对象传递给构造函数,或重写子类中的run()方法

start()上的文档开始

它安排在单独的控制线程中调用对象的run()方法


因为。如果未在子类中找到(或处理)父类,则会检查其属性。

您不打算在终止进程之前等待线程结束吗? 如果是:


谢谢,我完全应该读到更多,我一直在玩弄线程,现在我需要实现队列。。。好消息!谢谢你的回复。。。有趣的是,我在一个不同的应用程序中遇到了这个问题,其中一个用TKinter创建的独立应用程序被设计成在一个无休止的循环上运行,监听一个端口。。。说来话长。。。因此,它最初设计为与该应用程序一起运行内置程序,并且由于wmi模块的watch()保存应用程序流,我只需将其与其他“something.exe”一起调用,因此一旦生成windows关机,它就会显示。。。哎呀。。。杀死something.exe,则没有挂起的进程。
if __name__ == '__main__':
    info = Info()
    info.start()
    info.join()
    for process in c.Win32_Process(Name="something.exe"):
        result = process.Terminate()