我有一个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个循环,并打印连接的进度和结果?
答案 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)