【发布时间】:2012-03-16 02:05:49
【问题描述】:
与手写 C 相比,pypy 处理线程和套接字的速度是否更快?和普通的python相比?
我会尝试一下,但是有问题的 python 代码是为我不是管理员的一小群计算机编写的。我在这里问是因为我在谷歌上的尝试只提供了与 cython、空载燕子等的比较,如果这不太可能奏效,我不想让管理员为此烦恼。
我实际上并不需要 pypy 一样擅长 C;我正在寻找使用它,因为现在解释器的开销完全掩盖了我试图计时的计算。我只需要 pypy 就能让我靠近手写 C。
【问题讨论】:
-
你有没有考虑过用一个小脚本试试?
-
“等待套接字”或“启动和停止线程”真的是应用程序的 CPU 绑定性能瓶颈吗?如果是,您可能希望使用 select() 等待套接字并摆脱并行尝试。您是否对原始代码进行了分析?
-
它肯定会更慢(除非你使用一些不错的库来击败 C 程序中包含的库)。 JIT 是一个不错的功能,但访问时间仍然会受到影响,并且 JIT 可以使用更多的内存。不过,我不喜欢使用垃圾收集器的网络事物。
-
你怎么知道解释器开销占主导地位?如果你在集群上运行这个程序,你为什么要使用线程?如果您已经使用套接字与其他机器上的实例共享数据,为什么不使用套接字和多处理模块在一台机器上运行多个实例呢?这将使您绕过全局解释器锁定。
标签: python c multithreading sockets pypy