📅  最后修改于: 2023-12-03 15:25:31.996000             🧑  作者: Mango
并行代码是指同时执行多个任务或指令的代码。它能够使计算机快速高效地处理大量数据,提高程序运行效率。常见的并行计算方式包括多线程、多进程、GPU加速等。
多线程是指在一个程序中同时运行多个线程,每个线程都可以执行独立的任务。在 Python 中,可以使用 threading 模块来实现多线程编程。
下面是一个简单的多线程示例代码:
import threading
def worker():
print("Hello, World!")
threads = []
for i in range(5):
t = threading.Thread(target=worker)
threads.append(t)
t.start()
for t in threads:
t.join()
在这个例子中,我们创建了 5 个线程,并让它们同时执行 worker() 函数。使用 join() 方法可以让主线程等待所有子线程执行完毕再结束。
多进程是指在一个程序中启动多个进程,每个进程都可以独立运行并执行不同的任务。在 Python 中,可以使用 multiprocessing 模块来实现多进程编程。
下面是一个简单的多进程示例代码:
import multiprocessing
def worker():
print("Hello, World!")
processes = []
for i in range(5):
p = multiprocessing.Process(target=worker)
processes.append(p)
p.start()
for p in processes:
p.join()
在这个例子中,我们创建了 5 个进程,并让它们同时执行 worker() 函数。使用 join() 方法可以让主进程等待所有子进程执行完毕再结束。
GPU加速是指利用 GPU(图形处理器)的强大计算能力来加速程序运行,特别适用于处理大规模的数据和繁重的计算任务。在 Python 中,可以使用 CUDA 编程语言和相应的库来实现 GPU 加速。
下面是一个简单的 GPU 加速示例代码:
import numpy as np
from numba import cuda
@cuda.jit
def increment_kernel(array):
i = cuda.grid(1)
if i < array.size:
array[i] += 1
array = np.ones(10)
threads_per_block = 64
blocks_per_grid = math.ceil(array.size / threads_per_block)
increment_kernel[blocks_per_grid, threads_per_block](array)
print(array)
在这个例子中,我们使用 CUDA 编程语言和 numba 库来实现对一个数组的每个元素进行加 1 的操作。使用 @cuda.jit 装饰器将函数转换为可在 GPU 上执行的 CUDA 程序。使用 cuda.grid(1) 获取当前线程在 grid 中的索引,然后对数组进行加 1 操作。最后,我们使用 math.ceil() 函数来计算 grid 的数量,保证所有线程都可以被执行。
以上就是并行代码的介绍和示例,希望对初学者有所帮助。