我想为变量赋一个函数,然后我想得到它的变量名。因此,对于下面的代码,在我分配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