Python新数据到一个线程中运行的类

时间:2013-04-15 15:33:21

标签: python

所以我试图理解线程 - 并认为我从这样的事情开始:

在线程中运行的一个类或部分类 - 并且不时地为它提供新数据,这里只是打印。

然而它似乎并没有真正更新数据......实际上 - 它似乎在线程开始后卡住而且没有做任何其他事情?

这是我尝试过的:

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() 

2 个答案:

答案 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