所以我试图理解线程 - 并认为我从这样的事情开始:
在线程中运行的一个类或部分类 - 并且不时地为它提供新数据,这里只是打印。
然而它似乎并没有真正更新数据......实际上 - 它似乎在线程开始后卡住而且没有做任何其他事情?
这是我尝试过的:
class Test:
def __init__(self, num):
self.num = num
def printnum(self):
print("Num is: " + str(self.num))
def printloop(self):
while True:
print(self.num)
time.sleep(1)
def setnum(self, num):
self.num = num
test = Test(123)
test.printnum()
time.sleep(2)
test.setnum(123456)
test.printnum()
time.sleep(2)
threading.Thread(target=test.printloop()).start()
time.sleep(5)
test.setnum(31245)
test.printnum()
time.sleep(5)
test1.setcount(532556663)
test.printnum()
答案 0 :(得分:3)
在threading.Thread
构造函数中,您调用 printloop
方法。您需要在不调用它的情况下传入它,因此请删除括号:
threading.Thread(target=test.printloop()).start()
~~ <-- remove these
答案 1 :(得分:1)
我认为您需要将其更改为:
Threading.Thread(printloop).start()
即将其从printloop()更改为printloop。这将函数作为Thread执行的对象传递。目前你正在评估printloop(),而Thread()方法需要printloop()为它返回一个新函数!
此外,当您将数据传递给新线程时,可能会遇到重大困难 - 您可能需要输入锁以确保消息不会丢失/损坏。查看本教程,了解如何执行此操作(同步线程):
http://www.tutorialspoint.com/python/python_multithreading.htm