【发布时间】:2018-07-17 23:51:27
【问题描述】:
我有一个包含超过 2000 万行的文本文件,格式如下:
ABC123456|fname1 lname1|fname2 lname2
.
.
.
.
我的任务是逐行读取文件并将两个名称发送到 Google 音译 API 并在终端 (linux) 上打印结果。以下是我的代码:
import asyncio
import urllib.parse
from aiohttp import ClientSession
async def getResponse(url):
async with ClientSession() as session:
async with session.get(url) as response:
response = await response.read()
print(response)
loop = asyncio.get_event_loop()
tasks = []
# I'm using test server localhost, but you can use any url
url = "https://www.google.com/inputtools/request?{}"
for line in open('tg.txt'):
vdata = line.split("|")
if len(vdata) == 3:
names = vdata[1]+"_"+vdata[2]
tdata = {"text":names,"ime":"transliteration_en_te"}
qstring = urllib.parse.urlencode(tdata)
task = asyncio.ensure_future(getResponse(url.format(qstring)))
tasks.append(task)
loop.run_until_complete(asyncio.wait(tasks))
在上面的代码中,我的文件tg.txt 包含 20+ 百万行。当我运行它时,我的笔记本电脑死机了,我必须硬重启它。但是当我使用另一个只有 10 行的文件 tg1.txt 时,这段代码可以正常工作。我错过了什么?
【问题讨论】:
标签: python async-await aiohttp