并发和并行有什么区别?代码怎么实现?

2025-10发布5次浏览

并发和并行是计算机科学中经常被提及的两个概念,它们都与多任务处理有关,但含义有所不同。

并发(Concurrency)

并发是指系统中有多个任务在宏观上看起来是同时执行的,但实际上这些任务可能在微观上交替执行。并发强调的是任务的管理和调度,而不是真正的同时执行。在单核处理器上,通过时间片轮转等方式可以实现并发。

并行(Parallelism)

并行是指系统中有多个任务在绝对意义上同时执行。这通常需要多核处理器或多处理器系统来实现。在并行中,多个任务在不同的处理器核心上同时运行。

区别

  1. 执行环境:并发可以在单核处理器上实现,而并行需要多核处理器或多处理器系统。
  2. 执行方式:并发是任务在宏观上同时执行,微观上交替执行;并行是任务在微观上同时执行。
  3. 资源需求:并发对资源的需求相对较低,而并行需要更多的计算资源。

代码实现

以下是一个简单的示例,展示如何在Python中实现并发和并行。

并发实现

使用Python的threading模块来实现并发。

import threading

def print_numbers():
    for i in range(5):
        print(i)

def print_letters():
    for letter in 'ABCDE':
        print(letter)

# 创建线程
thread1 = threading.Thread(target=print_numbers)
thread2 = threading.Thread(target=print_letters)

# 启动线程
thread1.start()
thread2.start()

# 等待线程完成
thread1.join()
thread2.join()

并行实现

使用Python的multiprocessing模块来实现并行。

from multiprocessing import Process

def print_numbers():
    for i in range(5):
        print(i)

def print_letters():
    for letter in 'ABCDE':
        print(letter)

# 创建进程
process1 = Process(target=print_numbers)
process2 = Process(target=print_letters)

# 启动进程
process1.start()
process2.start()

# 等待进程完成
process1.join()
process2.join()

扩展与深化

  • 并发模型:常见的并发模型包括生产者-消费者模型、读者-写者模型等。
  • 并行算法:在并行计算中,常见的算法包括并行排序、并行搜索等。
  • 性能优化:在实现并发和并行时,需要考虑线程或进程的创建和销毁开销,以及锁的使用,以优化性能。