0

我正在编写一段代码,其中我有一个类A和两个线程B,并且C.

我创建了a一个A. 然后我启动两个线程,B然后是C.

Bfunc_nameAby中调用一个函数a.func_name()。到目前为止一切顺利。

C另一方面,需要访问作为列表的结果,例如在类中list_a定义并由实例访问。func_name()Aa

我必须使用这样的 for 循环来匹配一组字符串,

if self.string_variable in a.list_a:
    print "found"

但它给了我一个错误:

A实例没有属性list_a

有人可以帮帮我吗?

4

1 回答 1

2

您将需要某种同步原语——具体哪一种取决于您的设计和要求的更多细节。

假设列表a.list_b只创建一次,以后不修改,线程C需要等到a.func_name()返回。这可以通过threading.EventA. 中A.__init__(),添加

self.event = threading.Event()

在末尾A.func_name()添加

self.event.set()

在线程C尝试访问之前a.list_b,添加

a.event.wait()

等到a.func_name()在线程中完成B

一般来说,线程之间的同步是一个复杂的话题,也是一个容易出错的任务。只有当你真的需要时,你才应该这样做。

于 2012-07-26T12:38:02.047 回答