我有几个函数使用相同的参数,如下所示
def cat(time , dist)
return random.randint(1, 400) * time + random.randint(1, 5) * dist
def dog(time , dist)
return random.randint(1, 300) * time + random.randint(1, 7) * dist
def rabbit(time , dist)
return random.randint(1, 200) * time + random.randint(1, 3) * dist
def turtle(time , dist)
return random.randint(1, 100) * time + random.randint(1, 1) * dist
if __name__ == '__main__':
FunArray = {
1:cat
2:dog
3:rabbit
4:turtle
}
pool = multiprocessing.Pool(processes=2)
q=10
for i in xrange(1,4):
workers = pool.apply_async(FunArray[i], args=(i, q))
pool.close()
pool.join()
我只想同时运行两个进程,我想使用一个函数指针来传递进程的函数名。然而,这个程序不起作用。在
首先有一些语法错误:
没有
:
函数定义头的结尾。在字典文字的每一项后面都没有
,
:if __name__ == "__main__"
块应该缩进。没有导入
random
,multiprocessing
的import语句FuncArray
实际上是一本字典。在xrange(1, 4)
产生1,2,3。(4除外)。如果你想得到1,2,3,4,你应该使用xrange(1, 5)
。但是,我宁愿直接用enumerate
来迭代列表。在您需要保存workers引用以便稍后返回结果。在
相关问题 更多 >
编程相关推荐