Есть файл input.txt с id пользователей Discord, нужно вывести в output.txt их юзернеймы.
Все получается, но медленно, нужно использовать многопоточность. Я никогда не занимался multiprocessing.
В вот таком коде:
from discord.ext import commands
from multiprocessing import Pool
async def getusername(id):
try:
user = await client.fetch_user(int(id))
output.append(user)
print(id, user)
except:
pass
with open("input.txt", "r", encoding='UTF-8') as file:
src = file.readlines()
output = []
client = commands.Bot(command_prefix=".")
@client.event
async def on_ready():
print('Start')
for i in src:
i = i.strip()
p = Pool(20)
p.map(await getusername, src) #ошибка здесь
with open("output.txt", "w", encoding='utf-8') as file:
for i in output:
file.write(str(i)+'\n')
await client.close()
print("Finish")
input()
client.run('token’)
Возникает ошибка на отмеченной комментарием строчке:
TypeError: object function can’t be used in ‘await’ expression
Если оттуда убрать await, появляется другая ошибка:
RuntimeError: coroutine “getusername” was never awaited
Понятно, что в метод .map нужно передать функцию с await, только не знаю, как правильно написать.