Python中的并发编程基础
发布时间: 2024-03-30 10:00:36 阅读量: 29 订阅数: 40
# 1. 理解并发编程概念
1.1 什么是并发编程
1.2 并发编程与串行编程的区别
1.3 为什么需要并发编程
```python
# 示例代码:并发编程与串行编程的区别
import time
# 串行方式执行任务
def task1():
time.sleep(2)
print("Task 1 completed")
def task2():
time.sleep(2)
print("Task 2 completed")
start_time = time.time()
task1()
task2()
end_time = time.time()
print(f"Serial Execution Time: {end_time - start_time} seconds")
# 并发方式执行任务
import threading
def task1():
time.sleep(2)
print("Task 1 completed")
def task2():
time.sleep(2)
print("Task 2 completed")
start_time = time.time()
thread1 = threading.Thread(target=task1)
thread2 = threading.Thread(target=task2)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
end_time = time.time()
print(f"Concurrent Execution Time: {end_time - start_time} seconds")
```
**代码总结:**
- 串行执行方式依次执行任务,总耗时为任务1执行时间+任务2执行时间。
- 并发执行方式同时执行任务,总耗时为任务中耗时较长的时间。
**结果说明:**
- 串行执行耗时为4秒,而并发执行耗时为2秒。这展示了并发编程能够提高程序的效率。
# 2. Python中的并发编程模块
并发编程在Python中是一个非常重要的主题,Python提供了多个模块来支持并发编程,下面我们将介绍Python中的并发编程模块。
### 2.1 threading模块介绍
在Python中,`threading` 模块提供了面向线程的并发编程功能。通过创建线程,我们可以在同一个进程内同时执行多个任务,从而提高程序的执行效率。`threading` 模块提供了一系列方法来创建、启动和管理线程,以及线程间的通信和同步机制。
```python
import threading
# 创建一个简单的线程
def task():
print("Task is running")
thread = threading.Thread(target=task)
thread.start()
```
**代码总结:**
- 通过 `threading.Thread` 类创建一个线程对象,并传入目标函数 `target`。
- 调用线程对象的 `start()` 方法启动线程,线程会执行 `target` 函数中的任务。
**结果说明:**
- 运行以上代码会输出 "Task is running",表示线程成功执行了任务。
### 2.2 multiprocessing模块介绍
除了 `threading` 模块外,Python中还提供了 `multiprocessing` 模块来支持多进程并发编程。与线程类似,多进程可以在多个进程中同时执行任务,各自独立运行,互不影响。
```python
import multiprocessing
# 创建一个简单的进程
def task():
print("Task is running")
process = multiprocessing.Process(target=task)
process.start()
```
**代码总结:**
- 使用 `multiprocessing.Process` 类创建一个进程对象,并传入目标函数 `target`。
- 调用进程对象的 `start()` 方法启动进程,进程会执行 `target` 函数中的任务。
**结果说明:**
- 运行以上代码同样会输出 "Task is running",表示进程成功执行了任务。
### 2.3 asyncio模块介绍
在Python 3.4及以上版本中,新增了 `asyncio` 模块,用于支持异步编程。`asyncio` 基于协程的概念,可以编写高效的异步IO代码,实现并发操作而无需使用多线程或多进程。
```python
import asyncio
# 定义一个简单的协程
async def task():
print("Task is running")
# 创建事件循环并执行协程
loop = asyncio.get_event_loop()
loop.run_until_complete(task())
```
**代码总结:**
- 使用 `async def` 定义一个协程函数。
- 通过 `asyncio.get_event_loop()` 获取事件循环对象,并调用 `run_until_complete()` 执行协程。
**结果说明:**
- 运行以上代码同样会输出 "Task is running",表示协程成功执行了任务。
通过以上介绍,我们了解了Python中常用的并发编程模块:`threading`、`multiprocessing` 和 `asyncio`。在实际应用中,我们可以根据需求选择适当的模块来实现并发编程
0
0