我一直在使用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()def,那么为什么运行def开始呢?
这实际上是一个非常方便的应用程序我需要用来停止一个应用程序,当Windows关闭时似乎总是挂起...发现Windows关闭事件发生时有点头疼但幸运的是,金色的杰作拯救了一天!
答案 0 :(得分:4)
因为it's defined in the parent。如果在子类中找不到(或处理过)子类,则检查父类的属性。
答案 1 :(得分:2)
Thread
的子类在您呼叫run()
时自动呼叫他们的start()
。开始在Thread
中定义。
来自docs
有两种方法可以指定活动:将可调用对象传递给构造函数,或者通过覆盖子类中的run()方法。
以及start()
它安排在一个单独的控制线程中调用对象的run()方法。
答案 2 :(得分:1)
你是否打算在杀戮过程之前等待线程结束? 如果是这样的话:
if __name__ == '__main__':
info = Info()
info.start()
info.join()
for process in c.Win32_Process(Name="something.exe"):
result = process.Terminate()