有没有一种方法可以同时运行x次

时间:2019-10-23 21:12:18

标签: python python-3.x

我有一个while循环,其中某些东西的功率为99 hp,我希望它随机地将其“击中”到0,现在,我想说一百万遍以检查差异。有没有办法同时进行多个这些“模拟”?就像在机器学习中,老师如何同时教多个学生。

现在我只添加一个for语句,所以我在循环一百万次时对此进行了迭代。但这可能需要一段时间。

例如:

import random

hp = 99
for n in range(1000000):
    while hp > 0:
        hp -=  random.randint(0,10)

我希望它必须在减少循环次数的情况下进行迭代,或者如果可能的话,仅循环一次,除非出于某种原因,这实际上比上述代码花费的时间更长?

谢谢。

1 个答案:

答案 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然后每次存储返回值的列表。