0

我正在开发一个与用户“对话”的 Python 应用程序,并根据用户所说的内容执行任务(例如用户:“我有任何新的 facebook 消息吗?”,回答:“是的,你有 2 个新的消息。您想查看它们吗?”)。插件提供了与 facebook 或 twitter 集成等功能。基于预定义的解析规则,我的应用程序使用解析的参数调用插件,并使用它的响应。应用程序需要能够同时(或几乎同时)回答来自不同用户的多个查询。

目前,我需要以用户输入作为参数调用一个函数“响应”。但是,这有一些缺点:

i) 应用程序只能“说话时说话”。它不能决定向 facebook 查询新消息,并告诉用户是否这样做,而不被告知这样做。

ii) 一次与多个用户进行对话非常困难,因为应用程序一次只能做一件事:如果 Alice 要求应用程序检查她的 Facebook 是否有新消息,Bob 就无法与应用程序通信。

iii) 我无法开发(和使用)需要花费大量时间才能完成的插件,例如下载电影,因为应用程序无法执行任何操作,同时之前的任务还没有完成。

在这里,多线程似乎是显而易见的方法,但我担心一次创建和使用 500 个线程会显着影响性能,因此每个查询使用一个线程(查询是来自用户的语句)看起来不像正确的选择。

这样做的正确方法是什么?我读过一些关于 Twisted 的文章,“reactor”方法看起来很优雅。但是,我不确定如何在我的应用程序中实现类似的东西。

4

1 回答 1

0

我真的不明白它会是什么样的应用程序,但我试图回答你的问题

  1. 创建一个查询的线程,然后休眠一段时间
  2. 为每个用户创建一个线程,并在用户离开时关闭它
  3. 创建一个下载并停止的线程

毕竟,不会有 500 个线程。

于 2012-12-01T20:44:27.210 回答