Python中文
首页
教程
问答
标签
搜索
登录
注册
从操作系统的角度理解python的twisted异步性
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我是twisted库的新手,我试图理解python/twisted中的操作是如何异步执行的。到目前为止,我认为只有类似GUI(Qt或javascript)的平台才广泛使用事件驱动架构。在</p> <p>事实:</p> <ul> <li>Twisted程序在一个线程中运行=没有多线程</li> <li>使用reactor和deferred模式:声明回调/errback,所有操作都由reactor主循环控制</li> <li>一个CPU永远不能真正并行地做任何事情,因为它在进程之间共享它的资源等等。通过并行代码执行,我的意思是编程平台(python、javascript等)执行多个操作序列(例如,可以使用多线程处理来完成)</li> </ul> <p>问题1</p> <p>Python可以看作是操作系统的高级包装器。提供异步操作处理的操作系统函数(或C函数)是什么?有吗?在</p> <p>问题2</p> <p>Q1让我想到了一个想法,twisted的异步性并不是真正的异步性,就像我们在Javascript中所做的那样。例如,在JavaScript中,如果我们提供3个不同的按钮,将回调函数附加到它们上,然后我们单击所有三个按钮,那么这3个回调将并行执行。完全平行。在</p> <p>在Twisted中,据我所知,它不是真正的异步,它是,比方说,<em>近似于异步性</em>,因为没有操作可以并行执行(就代码而言,正如我在fact3中提到的那样)。在Twisted中,第一个n行代码(定义协议、工厂、连接等)是整个系统启动时将发生什么的声明。到目前为止没有什么进展。实际执行开始后,<code>reactor.run()</code>被触发。我知道reactor运行时基于一个遍历事件的<code>while True</code>循环。reactor检查所有等待执行的任务,对其进行处理,将结果发送回队列(回调或errback)。在下一个循环执行中,它们将被进一步处理。所以延迟执行实际上是线性的(不过,从外部看,它看起来是并行执行的)。我的解释正确吗?在</p> <p>如果有人能回答我的问题和/或解释异步在twisted/python平台中是如何工作的,以及它与操作系统的关系如何,我将不胜感激。提前感谢你的解释!在</p> <p><em>编辑:非常欢迎指向解释异步性的文章的链接!</em></p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>如果不更精确地定义许多术语并对您的事实提出异议,很难谈论这一点,但我的尝试是:</p> <p>问题1:</p> <p>试试<code>man select</code>,这大概就是Twisted的实现方式——这是一种要求操作系统同时监视多个对象并在其中任何一个触发时让应用程序知道的方法(阻塞多个对象)。在</p> <p>问题2:</p> <p>是的,差不多-但是你错了Javascript,它就像Twisted。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何提高Djang的410误差
4 回答
如何提高doc2vec模型中两个文档(句子)的余弦相似度?
7 回答
如何提高Docker的日志限制?|[输出已剪裁,达到日志限制100KiB/s]
6 回答
如何提高DQN的性能?
6 回答
如何提高EasyOCR的准确性/预测?
4 回答
如何提高Euler#39项目解决方案的效率?
1 回答
如何提高F1成绩进行分类
6 回答
如何提高FaceNet的准确性
2 回答
如何提高fft处理的精度?
8 回答
如何提高Fibonacci实现对大n的精度?
2 回答
如何提高Flask与psycopg2的连接时间
10 回答
如何提高FosterCauer变换的scipy.signal.invres()的数值稳定性?
4 回答
如何提高gae查询的性能?
1 回答
如何提高GANs用于时间序列预测/异常检测的结果
10 回答
如何提高gevent和tornado组合的性能?
3 回答
如何提高googleappengin请求日志的吞吐量
4 回答
如何提高googlevision文本识别的准确性
3 回答
如何提高groupby/apply效率
10 回答
如何提高Gunicorn中的请求率
8 回答
如何提高G中的文件编码转换
10 回答