python 多核并行计算-python 并行编程
发布时间:2023-02-13 07:03 浏览次数:次 作者:佚名
使用Python实现多核并行计算
原文链接
通常写的程序,不管是单线程还是多线程,大多只有一个进程,只能工作在一个核上。 所以即使很多应用程序满负荷运行,任务管理器中的CPU使用率仍然只有50%(双核CPU)或25%(四核CPU)
如果一个程序可以自己创建多个进程,让它们并行运行,那么它就可以同时运行在不同的cpu核上,从而实现并行计算。
Python 的并行计算就是这样做的。
之前的理解是错误的。。。还需要学习一个
1.多线程和多进程
我以前在操作系统课上学过...
一般来说python 多核并行计算python 多核并行计算,线程是比进程低一级的调度单元。 一个进程可以包含多个进程。
在线程之间切换比在进程之间切换更方便且成本更低。 因此,多线程的效率要高于多进程。
从2.6内核开始,Linux将不同的线程分配给不同的内核进行处理。 Windows 从 NT.4.0 开始也支持此功能。
[参考:
2.多线程与Python
很多语言都可以很好的支持多线程。 然而 Python 是个例外......
对于 IO 密集型任务,使用多线程仍然会增加 CPU 使用率。 对于CPU密集型的任务,Python中的多线程其实是一个鸡肋……无用……
互斥量存在于 Python 的解释器 CPython 中。 简单的说,一次只有一个线程在执行,其他线程都是block模式。
[参考:
3.多进程
如果想在py中充分利用多核cpu,只能使用多进程。
虽然成本较高,但与并行计算带来的性能提升相比,微不足道。 最重要的是好! 写! 啊!
这是第一个示例:
```
import multiprocessing
def func1(x):
while True:
print(x)
def func2(x):
while True:
print(x)
if __name__ == "__main__":
pool = multiprocessing.Pool(processes=2)
pool.apply_async(func1, (1,))
pool.apply_async(func2, (2,))
pool.close()
pool.join()