充分利用多核及分布式提升日志解析的性能

更新日期: 2018-02-07 阅读次数: 1754 分类: Python

在一个四核的机器上使用 python 运行以下代码

    while True:
        pass

会发现只有一个核使用率是 100%, 其他三个核则没事可干。

如果使用多线程呢?

由于 CPython (我们平时使用的 Python) 和 PyPy 使用了GIL (Global Interpreter Lock) 导致同一时刻只有一个线程的代码能够被执行,所以实际上是串行执行的,而不是并行。

解决方式通常有以下几种:

  • 使用 threading 模块来写多线程程序,但是在 IronPython 或者 Jython 下运行。
  • 使用 Python 2.6 之后所带的 multiprocessing 模块,使用多进程模型

参考

Multi-Core and Distributed Programming in Python

http://www.praetorian.com/blog/multi-core-and-distributed-programming-in-python

爱评论不评论

近期节日

2018年11月17日 国际大学生节
2018年11月20日 国际儿童日
2018年11月21日 世界问候日
2018年11月22日 小雪
2018年11月22日 感恩节
2018年12月01日 世界艾滋病日
2018年12月03日 国际残疾人日
2018年12月07日 大雪
2018年12月09日 "一二九"运动纪念日
2018年12月09日 世界足球日
2018年12月10日 世界人权日
2018年12月12日 西安事变纪念日
查看更多节日