Python将新数据添加到运行在线程中的类中
因此,我试图理解线程——我想从以下内容开始: 一个类或它的一部分在一个线程中运行,并时不时地给它提供新的数据,这里它只是打印 然而,它似乎并没有真正更新数据。。。事实上,它似乎在线程开始后就卡住了,不做任何其他事情 以下是我尝试过的:Python将新数据添加到运行在线程中的类中,python,Python,因此,我试图理解线程——我想从以下内容开始: 一个类或它的一部分在一个线程中运行,并时不时地给它提供新的数据,这里它只是打印 然而,它似乎并没有真正更新数据。。。事实上,它似乎在线程开始后就卡住了,不做任何其他事情 以下是我尝试过的: class Test: def __init__(self, num): self.num = num def printnum(self): print("Num is: " + str(self.num))
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()
在
threading.Thread
构造函数中,您正在调用printloop
方法。您需要在不调用它的情况下传入它,因此请删除括号:
threading.Thread(target=test.printloop()).start()
~~ <-- remove these
threading.Thread(target=test.printloop()).start()
~~在threading.Thread
构造函数中,您正在调用printloop
方法。您需要在不调用它的情况下传入它,因此请删除括号:
threading.Thread(target=test.printloop()).start()
~~ <-- remove these
threading.Thread(target=test.printloop()).start()
~~我认为您需要将此更改为:
Threading.Thread(printloop).start()
ie将其从printloop()更改为printloop。这将函数作为对象传递给线程执行。当前您正在计算printloop(),Thread()方法期望printloop()为其返回一个新函数
此外,当您将数据传递给新线程时,您可能会遇到重大困难-您可能需要设置锁以确保消息不会丢失/损坏。查看本教程,了解如何执行此操作(同步线程):
我认为您需要将此更改为:
Threading.Thread(printloop).start()
ie将其从printloop()更改为printloop。这将函数作为对象传递给线程执行。当前您正在计算printloop(),Thread()方法期望printloop()为其返回一个新函数
此外,当您将数据传递给新线程时,您可能会遇到重大困难-您可能需要设置锁以确保消息不会丢失/损坏。查看本教程,了解如何执行此操作(同步线程):
谢谢!作品现在我可以玩了谢谢!作品现在我可以玩得更多了