[Python | CS基础 ]Python多线程`threading`和多进程`multiprocessing`

多线程和多进程的Python实现

1. 多线程实现

1.1 原理

  • Python的多线程模块**threading**允许程序并发执行多个任务。
  • 由于全局解释器锁(GIL),Python的线程可能无法实现真正的并行执行,适合I/O密集型任务。

1.2 示例代码

python 复制代码
import threading
import time

# 定义线程要执行的函数
def print_numbers(threadName, delay):
    count = 0
    while count < 5:
        time.sleep(delay)
        count += 1
        print(f"{threadName}: {count}")

# 创建线程对象
thread1 = threading.Thread(target=print_numbers, args=("Thread-1", 1,))
thread2 = threading.Thread(target=print_numbers, args=("Thread-2", 2,))

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

# 等待线程执行结束
thread1.join()
thread2.join()

1.3 代码解释

  • print_numbers函数接受线程名称和延迟时间作为参数,并在循环中打印数字。
  • threading.Thread创建线程对象,target指定线程要执行的函数,args传递给函数的参数。
  • start()方法启动线程,join()方法等待线程完成。

2. 多进程实现

2.1 原理

  • Python的**multiprocessing**模块允许程序创建多个进程,每个进程有自己的内存空间和Python解释器,可以绕过GIL,适合计算密集型任务。

2.2 示例代码

python 复制代码
from multiprocessing import Process
import time

# 定义进程要执行的函数
def print_numbers(processName, delay):
    count = 0
    while count < 5:
        time.sleep(delay)
        count += 1
        print(f"{processName}: {count}")

# 创建进程对象
process1 = Process(target=print_numbers, args=("Process-1", 1,))
process2 = Process(target=print_numbers, args=("Process-2", 2,))

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

# 等待进程执行结束
process1.join()
process2.join()

2.3 代码解释

  • print_numbers函数接受进程名称和延迟时间作为参数,并在循环中打印数字。
  • Process创建进程对象,target指定进程要执行的函数,args传递给函数的参数。
  • start()方法启动进程,join()方法等待进程完成。

3. 休眠的作用

3.1 原因

  • 模拟耗时操作:模拟文件读写、网络通信等耗时任务。
  • 避免过快执行:减慢执行速度,便于观察输出。
  • 展示并发效果:增加线程切换机会,展示并发执行效果。
  • 避免资源竞争:减少同时访问共享资源的可能性。
  • 控制执行顺序:通过调整休眠时间,影响执行顺序。
  • 测试和调试:帮助开发者理解执行流程,定位问题。

3.2 示例代码中的休眠

  • 在多线程和多进程的示例代码中,time.sleep(delay)用于休眠指定的时间(秒),其中delay是传递给函数的参数。
相关推荐
薛定谔的算法14 分钟前
phoneGPT:构建专业领域的检索增强型智能问答系统
前端·数据库·后端
Databend2 小时前
Databend 亮相 RustChinaConf 2025,分享基于 Rust 构建商业化数仓平台的探索
数据库
得物技术2 小时前
破解gh-ost变更导致MySQL表膨胀之谜|得物技术
数据库·后端·mysql
数据智能老司机5 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机6 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机6 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机6 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i7 小时前
drf初步梳理
python·django
每日AI新事件7 小时前
python的异步函数
python
Raymond运维7 小时前
MariaDB源码编译安装(二)
运维·数据库·mariadb