如何同时多次执行循环以加快速度?

时间:2015-06-15 10:24:16

标签: python loops server progress simultaneous

我有一个Python脚本,它向服务器发出请求,并检查他们的响应。大约10%的响应是特殊的,因此它在遇到响应时会打印一条消息。 它完成90000次迭代,我设法在命令提示符下打印当前进度,如下所示:

print('{0}/{1}{2}{3}{4}{5}'.format(str(current_iteration_number),"90000  ",speed, " requests/s, ready in: ", timeleft, " minutes."),end="\r")

它设法每秒执行大约2.5个请求,但我知道这可能至少快5倍。我通过同时执行相同的脚本5次尝试了这一点(任何更多会导致服务器阻止我做看起来像Ddos攻击)。虽然这样做有效,但必须一次运行5个命令提示并手动加入结果并不是一种好办法。

如何让Python自己同时执行5个循环,并打印连接的进度和结果?

2 个答案:

答案 0 :(得分:0)

您可以使用线程或多处理库。此外,如果您的操作是I / O绑定,您可以使用asyncio库,这将为您提供单线程并发的优势。

答案 1 :(得分:0)

import multiprocessing
import numpy as np
def my_loop(x):
    #some stuff (this here is a silly example since it could be vectorized)
    return x**2
pool = multiprocessing.Pool()
pool_list = [float(i) for i in range(90000)]
results = pool.map(my_loop,pool_list)