1)内存开销是主要开销,如其他答案所述。您还需要支付编译费用,如果您没有选择的话,这可能会让人望而却步。从用户参考:
对于中型或大型应用程序,编译所有内容通常是过大的。编译过多的缺点在于编译所花费的时间,以及此过程消耗的内存量。保持这种微妙的平衡。
2)Psyco编译实际上可能会损害性能。再次从用户指南中(“已知错误”部分):
还有一些性能错误:Psyco减慢了代码而不是加速了代码的情况。很难完整列出可能的原因,但以下是一些常见原因:
- 必须避免内置函数
map和filter功能,并用列表理解代替。例如,map(lambda x: x*x,lst)应该用更具可读性但较新的语法代替[x*x for x in lst]。
*正则表达式的编译似乎没有从Psyco中受益。(由于它是C代码,因此正则表达式的执行不会受到影响。)请勿在此模块上启用Psyco;否则,请启用Psyco。如有必要,可以明确地将其禁用,例如通过调用psyco.cannotcompile(re.compile)。
3)最后,在某些相对模糊的情况下,使用Psyco实际上会引入错误。其中一些列在这里。



