【发布时间】:2018-10-28 02:44:52
【问题描述】:
我只是试图运行两个不同的守护线程并从每个线程中打印一行以进行测试。虽然这段代码有效:
import time
import threading
from threading import Thread
from myFunctions import *
class Monitoring:
def alarms(self):
return alarms.run()
def generator(self):
return generator.run()
def run(self):
generator = threading.Thread(target=self.alarms)
generator.daemon = True
generator.start()
alarm = threading.Thread(target=self.generator)
alarm.daemon = True
alarm.start()
print("started thread")
if __name__ == '__main__':
try:
d = Monitoring()
d.daemon = True
d.run()
print("started the thread")
while 1:
time.sleep(1)
except KeyboardInterrupt:
alarms.close()
generator.close()
print("Main - Keyboard interrupt in __main__")
这样的事情似乎不起作用,只有第一个线程“警报”开始。这是为什么?
class Monitoring:
def __init__(self,a,g):
self.a = a
self.g = g
def run(self):
generator = threading.Thread(target=self.a)
generator.daemon = True
generator.start()
alarm = threading.Thread(target=self.g)
alarm.daemon = True
alarm.start()
print("@class run() ")
if __name__ == '__main__':
try:
d = Monitoring(alarms.run(), generator.run())
d.daemon = True
d.run()
print("@__main__")
while 1:
time.sleep(1)
except KeyboardInterrupt:
alarms.close()
generator.close()
print("Main - Keyboard interrupt in __main__")
【问题讨论】:
-
在
d = Monitoring(alarms.run(), generator.run())中,函数alarms.run(和generator.run)被立即调用,而不是在新线程中。可能你想要d = Monitoring(alarms.run, generator.run)。 -
非常感谢 MIchael,来自 Javascript,我无法正常工作。随意添加回复,我会接受的。成功了!
标签: python python-3.x multithreading python-2.7 class