我如何在python中使用线程在另一个函数的后台运行一个函数?

时间:2018-08-26 12:35:16

标签: python multithreading

我该如何在python中使用线程模块?它似乎对我不起作用,并且从我在互联网上看到的内容来看,它应该起作用。我认为我正确使用了它,但似乎没有任何反应。为了明确起见,我想在后台(永远)运行一个函数,但是它总是在线程启动前卡在循环中。

这是我的代码,或者至少是我写的代码的一个版本,可以在不放弃秘密的情况下对其进行复制。

import threading

class class1:
    def method(self):
        while True:
            # do stuff here
            # gets stuck in this loop
    def threadfunc(self):
        thread = threading.Thread(target=self.method(),args=())
        thread.start()
r = class1() #                                       These (<) three lines of code don't work
thread = threading.Thread(target=r.method(),args=()) #      <
thread.start() #                                            <
print("Hello") # never gets run
c = class1() #    These (<) two don't work either, even if I get rid of the three above
c.threadfunc() #         <
print("Hello") # never gets run

1 个答案:

答案 0 :(得分:0)

您需要传递可调用而不是结果作为目标:target=self.method而不是self.method()