如何将两个整数与Twisted一起添加?

时间:2011-09-06 00:08:13

标签: python asynchronous twisted addition arithmetic-expressions

我的程序中有两个整数;我们称他们为“a”和“b”。我想将它们加在一起,结果得到另一个整数。这些是常规的Python int对象。我在想;如何将它们与Twisted一起添加?某处是否有特殊的performAsynchronousAddition功能?我需要Deferred吗?反应堆怎么样?是否涉及反应堆?

3 个答案:

答案 0 :(得分:40)

好的,要清楚。

Twisted对 cpu bound tasks 没有任何帮助,这是有充分理由的。通过重新排序子任务,没有办法让计算绑定的工作更快;你唯一可能做的就是增加更多的计算资源;因为它的实现很精细,所以即使这样也无法在python中运行。

Twisted提供特殊的语义和事件循环处理,以防程序变得“卡住”等待外部的控制;通常是在另一台机器上运行并通过网络连接与您的扭曲进程通信的进程。因为无论如何你都会等待,twisted会给你一个机制,让你在此期间完成更多工作。也就是说,twisted为 I/O Bound tasks

提供了并发性

tl; dr:twisted用于网络代码。其他一切都只是普通的python。

答案 1 :(得分:7)

这个怎么样:

c = a + b

这应该有效,并且不需要异步完成(它非常快)。

答案 2 :(得分:-7)

好问题,Twisted(或Python)应该有办法至少产生几个核心的“a + b”(在我的8核i7上)。

不幸的是,Python GIL阻止了这种情况的发生,这意味着您不仅要等待CPU绑定任务,而且还要等待一个核心完成工作,而其他七个核心无所事事。

注意:也许一个更好的例子是“a()+ b()”,甚至“fact(sqrt(a()** b())”等等但重要的事实是上面的操作会锁定一个核心和GIL几乎阻止Python在该操作期间做任何其他事情,这可能是几个ms ......