-3

我处于一种情况,我想根据一个变量将一个线程放入一个循环中,该变量在线程中的一个被调用函数中被更改。这就是我想要的。

error= 0

while( error = 0)
    run_thread = threading.Thread(target=self.run_test,args=(some arguments))

if ( error = 0)
    continue
else:
    break

现在运行测试调用一个函数,说 A 和 A 调用 B 和 B 调用 C。

def A()
      B()
def B()
     c()

def c()
    global error
    error = 1

这就是我想做的,但我无法解决这个问题。如果我尝试打印错误,我会收到代码错误。

有人可以帮我吗?

我是一个初学者,需要克服这个

4

1 回答 1

0
error = False

def A():
      B()

def B():
     c()

def c():
    global error
    error = True

def run_test():
    while not error:
        A()
    print "Error!"

import threading
run_thread = threading.Thread(target=run_test,args=())
run_thread.start()

但是,最好将线程子类化并重新实现 run(),并使用异常:

def A():
    raise ValueError("Bad Value")

import threading
class StoppableThread(threading.Thread):
    def __init__(self, *args, **kwargs):
        self.stop = False

    def run(self):
        while not self.stop:
            A() #Will raise, which will stop the thread 'exceptionally'

    def stop(self): #Call from main thread, thread will eventually check this value and exit 'cleanly'
        self.stop = True
于 2012-04-18T03:22:16.303 回答