|
@@ -840,6 +840,7 @@ PyWebIO的会话实现默认是基于线程的,用户每打开一个和服务
|
|
|
除了基于线程的会话,PyWebIO还提供了基于协程的会话。基于协程的会话接受协程函数作为任务函数。
|
|
|
|
|
|
基于协程的会话为单线程模型,所有会话都运行在一个线程内。对于IO密集型的任务,协程比线程占用更少的资源同时又拥有媲美于线程的性能。
|
|
|
+另外,协程的上下文切换具有可预测性,能够减少程序同步与加锁的需要,可以有效避免大多数临界区问题。
|
|
|
|
|
|
使用协程会话
|
|
|
^^^^^^^^^^^^^^^^
|
|
@@ -974,4 +975,16 @@ PyWebIO的会话实现默认是基于线程的,用户每打开一个和服务
|
|
|
threading.Thread(target=run_event_loop, daemon=True).start()
|
|
|
app.run(host='localhost', port='80')
|
|
|
|
|
|
-最后,使用PyWebIO编写的协程函数不支持Script模式,总是需要使用 ``start_server`` 来启动一个服务或者集成进Web框架来调用。
|
|
|
+最后,使用PyWebIO编写的协程函数不支持Script模式,总是需要使用 ``start_server`` 来启动一个服务或者集成进Web框架来调用。
|
|
|
+
|
|
|
+
|
|
|
+Last but not least
|
|
|
+---------------------
|
|
|
+
|
|
|
+以上就是PyWebIO的全部功能了,你可以继续阅读接下来的文档,或者立即开始PyWebIO应用的编写了。
|
|
|
+
|
|
|
+最后再提供一条建议,当你在使用PyWebIO遇到设计上的问题时,可以问一下自己:如果在是在终端程序中我会怎么做?
|
|
|
+如果你已经有答案了,那么在PyWebIO中一样可以使用这样的方式完成。如果问题依然存在或者觉得解决方案不够好,
|
|
|
+你可以考虑使用 `put_buttons() <pywebio.output.put_buttons>` 提供的回调机制。
|
|
|
+
|
|
|
+好了,Have fun with PyWebIO!
|