小编Ped*_*rra的帖子

Python 中最快的并行请求

我需要在不同的服务器上不断向大约 150 个 API 发出许多请求。我跟交易工作,时间很关键,我不能浪费1毫秒。

我发现的解决方案和问题是:

  • 使用 Asyncio 的异步:我不想依赖单个线程,因为某些原因它可能会卡住。
  • 线程:在 Python 上使用线程真的可靠吗?我有 1 个线程让
    其他线程卡住的风险吗?
  • 多进程:如果一个进程控制其他进程,我会在进程间通信中浪费很多时间吗?

也许是使用所有这些的解决方案。

如果 Python 中没有真正好的解决方案,我应该用什么来代替?

# Using Asyncio
import asyncio
import requests

async def main():
    loop = asyncio.get_event_loop()
    future1 = loop.run_in_executor(None, requests.get, 'http://www.google.com')
    future2 = loop.run_in_executor(None, requests.get, 'http://www.google.co.uk')
    response1 = await future1
    response2 = await future2
    print(response1.text)
    print(response2.text)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())


# Using Threads
from threading import Thread

def do_api(url):
    #...
    #...

#...
#...
for i in range(50):
    t = Thread(target=do_apis, args=(url_api[i],))
    t.start()
Run Code Online (Sandbox Code Playgroud)

python concurrency request python-requests

20
推荐指数
5
解决办法
3万
查看次数

标签 统计

concurrency ×1

python ×1

python-requests ×1

request ×1