不按顺序异步运行3行Python代码



好的,我有一个调用API并等待响应的函数。我使用线程是为了在构建DataFrame期间并行化调用请求。同样的函数稍后会被多次调用,但只有一个项。因此,迭代器实际上是一个只有1个元素的列表,因此不会发生线程处理。

如果迭代器长度为1,我想使用类似asyncio的东西来允许这3行代码无论顺序如何执行(而不是彼此等待)。

最少的代码:

from tqdm.contrib.concurrent import thread_map
import pandas as pd
def func(x):
return x+1
df = pd.DataFrame()
iterator = [1, 2, 3, 4]
df["foo"] = thread_map(func, iterator, max_workers=4)
df["bar"] = thread_map(func, iterator, max_workers=4)
df["foobar"] = thread_map(func, iterator, max_workers=4)

我想做的(async语法错误):

if len(iterator) == 1:
with async:
df["foo"] = func(iterator[0])
df["bar"] = func(iterator[0])
df["foobar"] = func(iterator[0])
else:
df["foo"] = thread_map(func, iterator, max_workers=4)
df["bar"] = thread_map(func, iterator, max_workers=4)
df["foobar"] = thread_map(func, iterator, max_workers=4)

找到一个可行的解决方案

df["foo"], df["bar"], df["foobar"] = thread_map(func, iterator * 3, max_workers=3)

相关内容

  • 没有找到相关文章

最新更新