我希望同一个类的两个对象同时运行。类“MyClass”具有将实例连接到类的另一个实例的函数。我还需要跟踪已创建的对象(oList)。我正在尝试的是:
main.py:
from MyClass import MyClass
import time
oList = []
class oCreator1(Thread):
def __init__(self):
Thread.__init__(self)
self.o1 = MyClass()
def run(self):
while 1:
time.sleep(1)
print "Hi"
def getO1(self):
return self.o1
class oCreator2(Thread):
def __init__(self):
Thread.__init__(self)
self.o2 = MyClass()
def run(self):
while 1:
time.sleep(1)
print "Bye!"
def getO2(self):
return self.o2
main():
threadList = []
global oList
oc1 = oCreator1()
threadList.append(oc1)
o1 = oc1.getO1()
oList.append(o1)
oc2 = oCreator2()
threadList.append(oc2)
o2 = oc2.getO2()
oList.append(o2)
o1.connToAnotherO(o2)
print oList
for t in threadList:
t.start()
t.join()
if __name__ == '__main__':
main()
但唯一印刷的是“嗨”。我真的想知道我做错的事情以及正确的做法。提前谢谢。
答案 0 :(得分:0)
for t in threadList:
t.start()
t.join()
t.join()
调用等待线程t
完成。这意味着当你启动第一个线程时,等待它在开始第二个线程之前完成,但第一个线程只是永远打印Hi
。它永远不会完成。
在所有线程都已启动之前,请勿join
或不启动join
。