在带有args和kwargs的单独线程中运行Python类方法

时间:2014-02-12 10:17:12

标签: python multithreading class

我有一个A级。

Class A():
    .... 

它有一个方法B,它有一个位置参数c和关键字参数d。

    def B(self, c, d=None):
        ....

现在,我想使用args o = A()运行对象c1, d1的方法B.我试过以下:

t = thread.Thread(target=o.B, args=(c1,), kwargs={'d':d1})
t.start()
t.join()

但它不起作用。因此我也试过了。

t = thread.Thread(target=A.B, args=(o, c1), kwargs={'d':d1})
t.start()
t.join()

这也行不通。在t.join()之后执行才会失败。我在Thread Class的{​​{1}}的第一条指令中设置断点,但代码永远不会到达那里。

1 个答案:

答案 0 :(得分:0)

(代表OP 发布)。

问题是在方法B()中,我使用的是yield语句。非常令人惊讶的是,在运行代码时,没有生成任何异常,解释器根本没有输入方法B()并且选择跳过它使得很难发现错误。