有什么方法可以替换循环到多线程以快速执行时间?

时间:2020-08-12 06:17:47

标签: python-3.x for-loop python-multithreading

为详细了解,我附上了文件链接。

Indetail understanding code

列表中有数据,其语法类似于:

i = [a.b>c.d , e.f.g>h.i.j ]
l = [a.b , e.f.g ]
n = [a.b>c.d , e.f.g ]

例如列表中的每个元素都有多个由“。”分隔的子元素。和“>”

for i in range(0, len(l)):
reac={}
reag={}
t = l[i].split(">")
REAC = t[0]
Reac = REAC.split(".")

for o in range(len(Reac)):

    reaco = "https://ai.chemistryinthecloud.com/smilies/" + Reac[o]

    respo = requests.get(reaco)
    reac[o] ={"Smile":Reac[o],"Details" :respo.json()}

if (len(t) != 1):
    REAG = t[1]
    Reag = REAG.split(".")
    for k in range(len(Reag)):

        reagk = "https://ai.chemistryinthecloud.com/smilies/" + Reag[k]
        repo = requests.get(reagk)
        reag[k] = {"Smile": Reag[k], "Details" :repo.json()}
    res = {"Reactants": list(reac.values()), "Reagents": list(reag.values())}
    boo.append(res)
else:
    res = {"Reactants": list(reac.values()), "Reagents": "No reagents"}
    boo.append(res)

我们已经分离了所有元素,并且对于每个元素,我们都在调用第三方API。那会浪费太多时间。

有什么方法可以减少时间并优化循环吗?

大约需要1分钟才能回复。我们希望优化到5-10秒。

1 个答案:

答案 0 :(得分:0)

您可以启动多个请求并在完成后处理它们 ThreadPoolExecutor。 这样可能会加快速度。