在一个四核的机器上使用 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 聊聊, 查看更多联系方式