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

更新日期: 2018-02-07 阅读次数: 6046 分类: 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

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式