金.卡戴珊2小时种子:Ubuntu中文论坛 ? 查看主题

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 14:18:34
在思考多核的时候,如果能从操作系统底层支持多核的话,相信无论是开发还是效率都将提升很多,这将是多核的出路,而从系统之上的应用层去使用多核,必将给多核效率打上折扣。这是毋庸置疑的。

同时看到一些人提到Python的多核,经过思考并搜索资料, gashero提到:

引用

为了利用多核处理器,看过很多文档,研究很多python相关技术,全部是失望的。
  
  1、Python:受限于GIL,被锁住只能用一个CPU核心。
  2、Twisted:其实只有一个线程,何谈多核的利用。
  3、Stackless:测试表明其多线程程序的速度比Python使用的native线程方式要快一点,不过一样没法用多核。
  4、parallel Python:多进程方式,感觉封装的很龌龊,虽然翻译完了文档,但是仍然没有兴趣去使用。
  
  现在的办法:
  
  1、负载均衡:后面在多台服务器上启动多个Python程序。现在我开发的应用基本上都是用twistd启动的daemon程序。
  2、C/S应用:各个进程间用多进程通信。
  3、subprocess:使用这个模块,利用外部进程作worker,异步等待结果。
  
  从这些解决方法之后,倒是感觉Python作为胶水语言其实多核利用也不是很必要。




动态语言本身是应用层面的,层次还低于独立基于C/C++写多核,所以多核会严重受编译器或者解析器限制。从这点来看,Python要支持多核是比较困难的。

而在和CANCAN讨论的时候,我提到,现在很多人所解析的多核都不完全对。在于:

引用

1:现在的硬件已经到了多核,而硬件上面的软件基本没有支持多核,性能是基本得不到很好的提高的。
2:而多核强调的是任务,传统线程强调的是线程本身。
3:要使得现在的软件系统支持多核,必须对软件的流程任务化,才可以得到性能的提高。
4:作为机械行业,现在的大型工程软件,支持并行计算的都很少,而要使得他们支持并行计算,对项目进行重构是必须的,除非是操作系统支持多核。