更新时间:2023-07-10 来源:黑马程序员 浏览量:

在Python中,"并发"和"并行"是两个相关但不同的概念。
并发 (Concurrency) 是指程序的设计方式,允许多个任务在重叠的时间段内执行。虽然在同一时刻只能执行一个任务,但任务之间可以通过切换上下文来实现交替执行。这种交替执行的方式可以提高程序的响应性和效率,尤其是在处理I/O密集型任务时。在并发编程中,任务之间通常是独立的,它们可以通过多线程、多进程、协程或异步编程等方式来实现。
并行 (Parallelism) 是指多个任务同时执行的能力。在并行编程中,多个任务真正地同时执行,通常需要多个物理或逻辑处理单元(例如多核CPU)。并行执行任务可以显著提高计算密集型任务的性能,但对于I/O密集型任务则没有明显的优势。
接下来我们看一段简单的代码演示,演示了并发和并行的概念:
import time
import concurrent.futures
# 并发执行任务
def task(name):
print(f'Task {name} started')
time.sleep(2) # 模拟任务执行时间
print(f'Task {name} completed')
# 并行执行任务
def parallel_task(name):
print(f'Task {name} started')
time.sleep(2) # 模拟任务执行时间
print(f'Task {name} completed')
# 并发示例
with concurrent.futures.ThreadPoolExecutor() as executor:
tasks = ['A', 'B', 'C']
executor.map(task, tasks) # 并发执行任务
# 并行示例
with concurrent.futures.ProcessPoolExecutor() as executor:
tasks = ['X', 'Y', 'Z']
executor.map(parallel_task, tasks) # 并行执行任务在上面的示例中,'task'函数模拟了一个耗时2秒的任务,并使用线程池实现了并发执行。'parallel_task'函数也是一个耗时2秒的任务,但使用了进程池实现了并行执行。我们可以运行这段代码,观察任务执行的顺序和时间,以更好地理解并发和并行的区别。
毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03AI智能应用开发课程紧贴企业刚需,全程高效学习,直达中高级软件开发水平
2026-02-28风口正劲!黑马程序员又一AI智能应用开发班毕业当天100%就业!
2026-02-27