Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

python多线程和多进程的区别

作者:暗夜骑士   发布日期:2025-02-18   浏览:59

import threading
import multiprocessing
import time

# 定义一个简单的任务函数
def task(name):
    print(f"Task {name} starts")
    time.sleep(2)  # 模拟耗时操作
    print(f"Task {name} ends")

# 多线程示例
def multi_threading():
    threads = []
    for i in range(3):
        t = threading.Thread(target=task, args=(f"Thread-{i}",))
        threads.append(t)
        t.start()

    for t in threads:
        t.join()

# 多进程示例
def multi_processing():
    processes = []
    for i in range(3):
        p = multiprocessing.Process(target=task, args=(f"Process-{i}",))
        processes.append(p)
        p.start()

    for p in processes:
        p.join()

if __name__ == "__main__":
    print("Multi-threading example:")
    multi_threading()

    print("\nMulti-processing example:")
    multi_processing()

解释说明:

  1. 多线程示例 (multi_threading)

    • 使用 threading.Thread 创建多个线程。
    • 每个线程执行相同的任务函数 task,传入不同的参数(如线程名)。
    • start() 方法启动线程,join() 方法确保主线程等待所有子线程完成。
  2. 多进程示例 (multi_processing)

    • 使用 multiprocessing.Process 创建多个进程。
    • 每个进程执行相同的任务函数 task,传入不同的参数(如进程名)。
    • start() 方法启动进程,join() 方法确保主进程等待所有子进程完成。
  3. 任务函数 (task)

    • 简单的任务函数,模拟耗时操作(使用 time.sleep(2))并打印开始和结束信息。

通过对比多线程和多进程的实现方式,可以看出它们的主要区别在于:

  • 线程共享同一进程的内存空间,因此线程间通信更方便但容易出现竞争条件。
  • 进程有独立的内存空间,因此进程间通信需要通过其他机制(如管道、队列等),但可以更好地利用多核 CPU。

上一篇:find在python中的用法

下一篇:python 16进制转10进制

大家都在看

python时间格式

python ord和chr

python list.pop

python的for i in range

npm config set python

python代码简单

python读取文件夹

python中turtle

python 输出时间

python中list代表什么

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站