擅长:python、mysql、java
<p>托马斯已经回答了你的第一个问题,但我想在问题2的基础上再补充一点。
从你对(第二个)问题的措辞来看,你似乎误解了异步性。
不应将异步与多处理混为一谈。
下面是异步性的一个例子。
假设您有两个任务要完成。
1) 从磁盘读取文件
2) 对内存中的几个整数求和</p>
<p>在一个<strong>同步</strong>系统中,这些任务一次完成一个,我们等待操作结果,然后再继续下一个。
在<strong>异步</strong>系统中,我们启动每个操作,然后定期检查每个操作的完成情况。(这就是漂亮的选择操作的地方)
有关详细信息,请参阅此wiki页面:<a href="http://en.wikipedia.org/wiki/Asynchronous_I/O" rel="nofollow">http://en.wikipedia.org/wiki/Asynchronous_I/O</a></p>
<p>因此,即使在一个单核系统上,在一个特定的时间点上,实际上只有一个线程在运行,我们仍然可以有一个异步系统,这样那些耗时较长的任务(在上面的例子中读取一个文件)不会对那些能够快速完成工作的任务(在内存中求和一些整数)造成麻烦</p>
<p>(顺便说一句,Twisted确实支持生成新线程。
<a href="http://twistedmatrix.com/documents/11.0.0/core/howto/threading.html" rel="nofollow">http://twistedmatrix.com/documents/11.0.0/core/howto/threading.html</a>)</p>