2016-11-14 5 views
0

저는 이와 비슷한 코드를 제공하고 있습니다. 기본적으로 나는 다른 스레드가 진행되는 동안 시작될 수있는 여러 스레드를 갖게 될 것이고 새로운 프로세스가 이전 코드를 죽이기를 원하지만 아직 코드 아래에 루프()은 죽기를 원하지 않는다. 이유를 모르겠습니다. 또한이 작업을 수행하는 더 좋은 방법이 있습니까?전역 변수가 변경되지 않습니다.

다른 프로그램이이 모듈을 가져 와서 첫 번째 스레드가 종료되기 전에 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

파이썬에는'<> '연산자가 있습니까? –

+0

'die == 1'이 결코 사실이 아닐 것입니다. –

+0

저는 파이썬 2.7을 사용하고 있습니다. 그래야합니다! = 대신 사용하지만 여전히 지원됩니다. – Trevor

답변

0

하는 명령 아래에 사용해보십시오 :

대신 다이 == 1의, == '1'or "1"다이 사용하거나 -eq 사용할 수있는 대신 == ->이

를 작동 할 수
관련 문제