我试图使我的不和谐机器人一次响应多个人。我的功能之一是与spacy模块进行交互并处理大量文本。如果该函数被调用一次,并且最终又被冻结,因为它试图处理第一个请求。
nlp = spacy.load("en_core_web_sm")
@bot.event
async def on_message(message):
if message.content.startswith('!research'):
doc = 'long paragraphs...'
#Searches through doc for sentences relating to a word
nlp(doc) #Takes time to process here
results = textacy.extract.semistructured_statements(document, 'a word')
我的问题:如何同时对多个请求运行相似的功能,或者我在这里做错了什么?
答案 0 :(得分:0)
我通过创建另一个异步函数来解决此问题,当触发主事件时会调用它。
nlp = spacy.load("en_core_web_sm")
#Use async here!
async def researchCommand(doc, message): #Takes in doc and message so we can respond to author
#Does processing here
nlp(doc)
@bot.event
async def on_message(message): #Main function
big_book = 'long paragraphs...'
if message.content.startswith('!research'):
await researchCommand(big_book, message)
现在您可以将多个请求与一个函数并行。