在 Python 的线程中使用全局变量



我的情况是,我想将线程放入循环中,具体取决于线程中调用的函数之一中正在更改的变量。这就是我想要的。

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

这就是我想做的,但我无法解决这个问题。如果我尝试打印错误,则代码中出现错误。

有人可以帮我吗?

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

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

相关内容

  • 没有找到相关文章

最新更新