运行时函数目标到多处理。进程

时间:2016-04-07 11:35:37

标签: python runtime typeerror python-multiprocessing

有没有办法在运行时决定新进程运行哪个函数。 (由multiprocessing.Process创建)

假设我有2个功能

def f():
    print("In f")

def g():
    print("In g")

func_name = str(input("enter function to be run = "))

multiprocessing.Process(target = func_name, args = ()).start()

现在我运行程序

enter function to be run = f

这给了我错误

TypeError: 'str' object is not callable

这看起来很明显,因为函数的名称应该匹配,但在这种情况下,名称在变量func_name中作为字符串。

1 个答案:

答案 0 :(得分:2)

使用字典:

functions = {'f': f, 'g': g}

multiprocess.Process(target=functions.get(func_name), args=()).start()

最好确保func_name实际上在functions。您还可以使用默认函数作为.get()

的第二个参数