2016-11-14 15 views
0

私はこのようなコードを用意しています。基本的に私は他のスレッドがまだ進行中の間に開始するかもしれない複数のスレッドを持っていますが、私は新しいプロセスが古いコードをまだ終了させたいと思っています。loop()は死ぬことを望まないし、理由を知りません。これを行うための良い方法がありますか?グローバル変数は変更されていません

別のプログラムがこのモジュールをインポートし、最初のスレッドが終了する前にautomation.loopwrapperwrapper(0,255)とautomation.loopwrapperwrapper(0,255)を再度実行するとします。

import threading 
import time 

die=0 
value=0 

def loop(valuefrom, valueto) 
    global value 
    global die 
    die=0 
    while value<>valueto: 
     if die==1: 
      return value 
     if value>valueto: 
      value -= 1 

     else: 
      value += 1 
      time.sleep(1) 
    return value 

def loopwrapper(valuefrom, valueto) 
    global die 
    die=1 
    value=loop(valuefrom, valueto) 
    return value 

def loopwrapperwrapper(valuefrom,valueto) 
    t = threading.Thread(target=loopwrapper, args=(valuefrom,valueto)) 
    t.start() 

は、私が誤ってこれを単純化していたし、コードが作業を行う場合は、ここで私が働いている実際のコードです。 http://pastebin.com/SCR6pUwi

ご協力いただきありがとうございます。

+1

Pythonには '<> '演算子がありますか? –

+0

もし 'die == 1'が決して真実でないならば、 –

+0

私はpython 2.7を使用しています。そうすれば!=を代わりに使うべきですが、それでもサポートされています。 – Trevor

答えて

0

コマンドの下に使用してみてください:==の代わりにダイ== 1、使用ダイの

「1'or "1"、またはあなたの代わりに==を-eq使用することができます - これは

を働くこと>
関連する問題