[英]How do I add two integers together with Twisted?
我的程序中有两个整数; 我们称他们为“ a
”和“ b
”。 我想将它们加在一起,结果得到另一个整数。 这些是常规的Python int
对象。 我在想; 如何将它们与Twisted一起添加? 某处有特殊的performAsynchronousAddition
功能吗? 我需要Deferred
吗? 反应堆怎么样? 是否涉及反应堆?
好的,要清楚。
Twisted对cpu绑定任务没有任何意义,并且有充分的理由。 通过重新排序子任务,没有办法让计算绑定的工作更快; 你唯一可能做的就是增加更多的计算资源; 因为它的实现很精细,所以在python中也行不通。
Twisted提供了特殊的语义和事件循环处理,以防程序在被控制时变得“ 卡住 ”等待外面的东西; 通常是在另一台机器上运行并通过网络连接与您的扭曲进程通信的进程。 既然你会等待 ,那么twisted会让你有机会在此期间完成更多工作。 也就是说,twisted为I / O Bound任务提供并发性
tl; dr:twisted用于网络代码。 其他一切都只是普通的python。
这个怎么样:
c = a + b
这应该工作,并且不需要异步完成(它非常快)。
好问题,Twisted(或Python)应该有办法至少产生几个核心的“a + b”(在我的8核i7上)。
不幸的是,Python GIL阻止了这种情况的发生,这意味着你不仅要等待CPU绑定任务,而且还要等待一个核心完成工作,而其他七个核心什么都不做。
注意:也许一个更好的例子是“a()+ b()”,甚至“fact(sqrt(a()** b())”等等,但重要的事实是上面的操作将锁定一个核心和GIL几乎阻止Python在该操作期间做任何其他事情,这可能是几毫秒......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.