擅长:python、mysql、java
<p>不要使用线程。如果坚持使用Python,让节点逐个执行它们的操作。如果你的性能是可以的,你就不必使用C/C++。如果每个节点执行的操作都很简单,那就可以了。无论如何,根本没有理由在Python中使用线程。Python线程主要用于使阻塞的I/O不阻塞您的程序,而不是用于多个CPU内核的利用。在</p>
<p>如果您想真正使用并行处理并编写节点,就好像它们实际上是分开的,并且只使用消息交换,那么可以使用Erlang(<a href="http://www.erlang.org/" rel="nofollow">http://www.erlang.org/</a>)。它是一种非常适合于执行并行进程并使它们交换消息的函数式语言。Erlang进程不映射到OS线程,您可能会创建数千个线程。然而,Erlang是一种纯函数式语言,如果您从未使用过这种语言,那么它可能会显得非常奇怪。而且它也不是很快,因此,像Python一样,它不可能每5毫秒处理1600个操作,除非这些操作非常简单。在</p>
<P>最后,如果您没有使用Python或Erlang获得期望的性能,您可以移动到C或C++。但是,仍然不要使用1600个螺纹。事实上,只有当线程的数量没有显著超过CPU内核的数量时,使用线程来获得性能才是合理的。在这种情况下(<a href="http://en.wikipedia.org/wiki/Reactor_pattern" rel="nofollow">http://en.wikipedia.org/wiki/Reactor_pattern</a>)可能需要reactor模式(带有多个reactor线程)。在中有一个很好的reactor模式的实现boost.asio公司图书馆。解释如下:<a href="http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio/" rel="nofollow">http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio/</a></p>