python:__name__在为其分配函数后不返回变量名

时间:2017-03-03 09:39:38

标签: python

我想为变量赋一个函数,然后我想得到它的变量名。因此,对于下面的代码,在我分配my_test_2 = my_test之后,我希望得到“my_test_2”字符串,但它返回my_test。有没有办法返回my_test_2?

In [2]: def my_test():
   ...:     print 1
   ...:     

In [3]: my_test_2 = my_test

In [4]: my_test_2.__name__
Out[4]: 'my_test'     # I need value of 'my_test_2', how to achieve this?

更新我需要此功能的原因: 我想同时运行几个函数,然后等待一个超时时间,以获得不同函数的所有结果。所以我试着返回parallel_async的地图。关键是功能名称。如果我需要多次调用该函数,那么该键将被覆盖,因此我将该函数重新定义为不同的变量名。有了这个我期望有不同的关键。也许有更好的解决方案?目前我只想将变量名称作为关键字。

def parallel_async(args_list,timeout_second):
    """parallel run many different functions, all should return in timeout window,
    otherwise the return value for that function will be None

e.g:

    def my_wait1(a):
        print a
        time.sleep(a)
        return a

    my_wait2 = my_wait1

    result = parallel_async([[my_wait,1],
                    [my_wait2,2]],2)
    print result

    result should be:
        {'my_wait': None, 'my_wait1': 2}

    """
    result = {}
    print 'aaa'
    def run_func(args):
        func_name = itertoolz.first(args)
        func_args = list(itertoolz.rest(args))
        print func_name
        print func_args
        result.update({func_name.__name__:func_name(*func_args)})

    pool = ThreadPool(len(args_list))
    try:
        pool.map_async(run_func,args_list).get(timeout_second)
    except Exception as e:
        pool.close()
    return result

0 个答案:

没有答案