大家好, 我刚开始接触python(我刚开始不到2周) 所以我需要一些建议和技巧:p
获取大约1500个api请求的最快和最有效的方法是什么?在
目前它对我很有用,但是执行1400个api请求需要大约8秒的时间,但是当我尝试一个没有线程的请求时,它需要9秒 我做错什么了??!
async def fetch_one(url):
async with curio_http.ClientSession() as session:
response = await session.get(url)
content = await response.json()
return content
def MultiFetch(URLS,X):
MyThreadsList = []
MyThreadsResults = []
N_Threads = (lambda x: int (x/X) if (x % X == 0) else int(x/X)+1) (len(URLS))
for i in range( N_Threads ): # will iterate X = ListSize / X
MyThreadsList.append( Thread( target = curio.run , args = (fetchMultiURLs( (URLS[ i*X:(X*i+X)]) ) ,) ) )
MyThreadsList[i].start()
for i in range( N_Threads ):
MyThreadsResults.append(MyThreadsList[i].join())
return MyThreadsResults
最后我找到了一个解决方案:)获取1400个URL需要2.2秒
我使用了3ed建议(进程内的异步循环)
#获取1个URL
#获取X个URL 异步def fetchmultiurl(url_列表): 任务=[] 响应=[] 对于url_列表中的url: 任务=等待古董。产卵(获取一(url)) 任务.append(任务)
^{pr2}$#我试图用lambda代替这个函数,但它不起作用
#根据URL创建进程和异步循环/X循环URL
\
^{4}$我在1.1s内获取2100个网址我希望这个解决方案能帮助你们
相关问题 更多 >
编程相关推荐