2017-09-05 8 views
0

나는 스레드 된 코드를 작성 중이며 다양한 기능을 동시에 사용하고 있습니다. 각 스레드마다 다른 ref 변수가 있습니다.함수간에 파이썬 공유 변수가 있지만 스레드가 아닙니다.

ref은 스레드 함수 내의 함수 내에서 정의되므로 전역 ref을 사용할 때 모든 스레드는 ref (동일한 값을 사용하지 않습니다)을 사용합니다. 그러나 글로벌 ref을 사용하지 않을 경우 다른 기능은 정의되지 않았으므로 ref을 사용할 수 없습니다.

예컨대 :

def threadedfunction(): 
    def getref(): 
     ref = [get some value of ref] 
    getref() 
    def useref(): 
     print(ref) 
    useref() 
threadedfunction() 
+0

인수와 반환 값에 대해 들어 봤어? 함수를 사용하여 데이터를주고받는 데 사용해야합니다. – user2357112

+1

멀티 스레드를 수행하기 전에 100 % 편안해야합니다. – user2357112

+0

쓰레드간에 쓰고 있다면 쓰레드 세이프 타입을 사용해야한다. 파이썬의 내장 타입은 안전하다는 보장이 없습니다. –

답변

0

당신은 많은 다른 옵션이없는 사용자의 요구에 맞지 않는 globalref를 정의하는 경우 ...

편집 함수의 매개 변수와 반환. 가능한 해결책 :

def threadedfunction(): 

    def getref(): 
     ref = "Hello, World!" 
     return ref # Return the value of ref, so the rest of the world can know it 

    def useref(ref): 
     print(ref) # Print the parameter ref, whatever it is. 

    ref = getref() # Put in variable ref whatever function getref() returns 
    useref(ref) # Call function useref() with ref's value as parameter 

threadedfunction() 
+0

고맙습니다. –