下午好,我有一个问题我解决不了。我想在Hack The Box (合法平台)中执行SQL注入。情况是,我试图对服务器执行一个查询,如果查询是有效的,服务器需要两秒钟才能返回响应。为了加快速度,我想用线程.问题的出现是因为如果我尝试用线程模块来完成它,它对我来说就不正确了,线程开始和完成的顺序很重要。我给你们举个例子:
from threading import Thread
import time
import string
def prueba(a):
if a in letras:
time.sleep(2)
letras_agregadas.append(a)
letras_agregadas = []
progreso = ""
letras = ["a", "k", "s", "C", "F", "Z"]
antes = time.time()
for letra in string.ascii_letters:
h1 = Thread(target=prueba, args=(letra,))
h1.start()
resultado = "".join(letras_agregadas)
despues = time.time()
print("".join(letras_agregadas) + "antes")
print(resultado)
print(antes - despues)我想要"resultado“变量按照接收到的顺序获得字母,但是程序结束了,并且没有添加任何东西到"resultado",我尝试过使用.join(),但是程序所用的时间与不使用线程的时间相同,非常感谢。
发布于 2022-05-14 19:39:00
您可以尝试使用multiprocessing并使用Pool运行所有内容,这允许您跨多个变量进行等位化。
我就是这样做的:
from multiprocessing import Pool
def prueba(a):
letras_agregadas = []
if a in letras:
time.sleep(2)
letras_agregadas.append("".join(a+'antes'))
return letras_agregadas
progreso = ""
letras = ["a", "k", "s", "C", "F", "Z"]
antes = time.time()
if __name__ == '__main__':
with Pool(5) as p:
h1 = p.map(prueba, letras)
print(h1)产出:
['aantes'], ['kantes'], ['santes'], ['Cantes'], ['Fantes'], ['Zantes']另外-你想要达到的目标有些混乱。例如,为什么要执行此print("".join(letras_agregadas) + "antes"),然后将antes = time.time()作为time操作。
https://stackoverflow.com/questions/71680592
复制相似问题