Python 在函数之间共享变量但不在线程之间共享变量
Python share variables between functions but not threads
我正在编写一些线程化的代码,并且同时使用各种不同的函数。我有一个名为 ref
的变量,每个线程都不同。
ref
是在线程函数内的一个函数内定义的,所以当我使用全局 ref
时,所有线程都对 ref
使用相同的值(我不想)。但是,当我不使用全局 ref
时,其他函数无法使用 ref
,因为它未定义。
例如:
def threadedfunction():
def getref():
ref = [get some value of ref]
getref()
def useref():
print(ref)
useref()
threadedfunction()
如果将 ref
定义为 global
不符合您的需求,那么您没有太多其他选择...
编辑函数的参数和returns。可能的解决方案:
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()
我正在编写一些线程化的代码,并且同时使用各种不同的函数。我有一个名为 ref
的变量,每个线程都不同。
ref
是在线程函数内的一个函数内定义的,所以当我使用全局 ref
时,所有线程都对 ref
使用相同的值(我不想)。但是,当我不使用全局 ref
时,其他函数无法使用 ref
,因为它未定义。
例如:
def threadedfunction():
def getref():
ref = [get some value of ref]
getref()
def useref():
print(ref)
useref()
threadedfunction()
如果将 ref
定义为 global
不符合您的需求,那么您没有太多其他选择...
编辑函数的参数和returns。可能的解决方案:
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()