Python在函数之间共享变量而不是线程

时间:2017-09-05 20:26:50

标签: python multithreading variables share global

我正在编写一些我已经线程化的代码,并且我正在使用各种不同的函数。我有一个名为ref的变量,每个线程都不同。

ref是在线程函数内的函数中定义的,所以当我使用全局ref时,所有线程都使用ref的相同值(我不会这样做)想)。但是,当我不使用全局ref时,其他功能无法使用ref,因为它未定义。

E.g:

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

1 个答案:

答案 0 :(得分:0)

如果将ref定义为global并不符合您的需求,那么您就没有其他选择......

编辑您的功能参数并返回。可能的解决方案:

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