-3

私は、スレッド内の呼び出された関数の 1 つで変更されている変数に応じて、スレッドをループに入れたい状況にあります。ここに私が望むものがあります。

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()

ただし、thread をサブクラス化して 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 に答える