我有一个while循环,其中某些东西的功率为99 hp,我希望它随机地将其“击中”到0,现在,我想说一百万遍以检查差异。有没有办法同时进行多个这些“模拟”?就像在机器学习中,老师如何同时教多个学生。
现在我只添加一个for语句,所以我在循环一百万次时对此进行了迭代。但这可能需要一段时间。
例如:
import random
hp = 99
for n in range(1000000):
while hp > 0:
hp -= random.randint(0,10)
我希望它必须在减少循环次数的情况下进行迭代,或者如果可能的话,仅循环一次,除非出于某种原因,这实际上比上述代码花费的时间更长?
谢谢。
答案 0 :(得分:0)
您可以使用多重处理同时运行n次。
在此示例中,该函数在4个内核上运行n次函数,并打印出将运行状况耗尽为0所需的平均“滴答”数量。
from multiprocessing import Pool
import random
def depleteHp(input):
hp = 99
ticks = 0
while hp > 0:
ticks += 1
hp -= random.randint(0,10)
return ticks
if __name__ == '__main__':
pool = Pool(processes=4)
n = 1000
inputs = range(n)
# calc depleteHp output using 4 processes
out_list = pool.map(depleteHp, inputs)
# average
print (sum(out_list) / float(n))
pool.map(function,list_of_inputs)将该函数映射到n个处理器上,每次提供“ list_of_inputs”的下一项。因此,在这种情况下,它将数字0到1000馈送到depleteHp函数。
out_list然后每次存储返回值的列表。