- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
学习 Python 并尝试做一些雄心勃勃的事情(也许太多了)。
应用程序(控制台,像服务器一样静默运行),需要与 2 个串行端口通信,需要处理计时器,需要在 Redis KV 存储上推送信息,写入日志,并与其他一堆类似的交互使用 unix IPC(或套接字通信)的应用程序
(在我看来)考虑此类应用程序的更简单方法是使用线程和事件队列。然而,由于我理解为 GIL 对线程的强制限制,它不是 Python 的一个选项(除非,我误解了事情)。据我了解,另一种方法是使用异步 I/O 框架、绿色线程、协程等。
是twisted , gevent和 asyncoro我打算编写的用于异步事件驱动编程的 Python 中的真正替代品?
由于学习 twisted 似乎是一项巨大的投资(就时间/精力而言),我想知道 gevent 和 asyncoro 是否可以成为更容易和更好的选择?从到目前为止所做的一些肤浅的文档阅读来看,asyncoro 似乎是最简单的,新学习的数量非常有限,而 Twisted 是另一个极端,gevent 处于中间位置——但我不确定,如果他们是确实具有可比性。
这是一个应用程序在多线程时会执行的操作的示例:
所有线程都需要记录日志,所有线程都使用计时器(和其他事件)来做某些事情。定时器用于定期执行某些逻辑并作为超时来保护某些操作(阻塞或非阻塞)。
我使用 Python 的经验非常有限,但我有使用 C/C++ 和 Java 编写类似程序的经验。为此,使用 Python 进行学习。
最佳答案
您可以使用此处提到的任何库来实现您描述的应用程序。您也可以使用传统线程。 GIL 阻止您在执行 Python 字节代码操作时实现硬件级并行性(这与从 Python 程序调用的 native 代码不同)。它不会阻止您执行并行 I/O 操作 - 这听起来像是您的应用程序主要关心的。
您的问题中没有足够的细节来提供这些工具中的一个相对于另一个工具的推荐(如果有足够的细节,问题可能会很大并且正确回答它的努力可能会阻止 SO 上的任何人从这样做)。通常可以肯定地说,线程方法可能是最糟糕的(出于各种原因,我什至不会在这里尝试解释;它们在 Internet 上有足够的记录)。
关于python - Twisted、genvent、asyncoro——它们是我可能需要的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29649489/
学习 Python 并尝试做一些雄心勃勃的事情(也许太多了)。 应用程序(控制台,像服务器一样静默运行),需要与 2 个串行端口通信,需要处理计时器,需要在 Redis KV 存储上推送信息,写入日志
我是一名优秀的程序员,十分优秀!