Python 中的多进程和多线程

Python 中的多进程和多线程多进程和多线程是实现多任务及提升任务执行效率的两种常用方法。两者都遵循 Master-Worker 模式,Master 负责分配任务,Worker 负责执行任务。具体来说,多进程由一个主进程与多个子进程构成,而多线程由一个主线程与多个子线程构成。两者的一个主要区别在于:多进程的每个进程创建在不同的内存空间中,而多线程创建在一个进程中。一、 多进程与多线程的优缺点...
摘要由CSDN通过智能技术生成

Python 中的多进程和多线程

多进程多线程是实现多任务及提升任务执行效率的两种常用方法。两者都遵循 Master-Worker 模式,Master 负责分配任务,Worker 负责执行任务。具体来说,多进程由一个主进程与多个子进程构成,而多线程由一个主线程与多个子线程构成。两者的一个主要区别在于:多进程的每个进程创建在不同的内存空间中,而多线程创建在一个进程中。

一、 多进程与多线程的优缺点对比:
  • 多进程的优点:稳定性高,因为一个子进程崩溃了,不会影响主进程和其他子进程(当然主进程崩溃了所有进程就全崩溃了,但是主进程只负责分配任务,崩溃的概率很低)。多进程模式的另一个优点是可以将进程分布到多台机器上。
  • 多进程的缺点:创建进程的代价大,一般情况下创建的进程数不超过CPU核数的2倍。
  • 多线程的优点:系统开销较小,在Windows下,多线程的效率比多进程要高
  • 多线程的缺点:稳定性差,由于多线程创建在一个进程中,这就意味着多个线程共用相同的内存空间,所以当一个线程崩溃,其它线程也会崩溃。此外,多线程不能分布在多台机器上。
  • Python解释器由于设计时有GIL全局锁,导致无法利用多线程实现多核任务,但可以通过多进程实现多核任务。多个Python进程有各自独立的GIL锁,互不影响。
二、 多进程的实现
1. 创建进程

通过调用 multiprocessing 模块的 Process 可以创建一个进程对象,创建进程之后,操作系统会自动把当前进程(称为父进程)复制一份(称为子进程),然后,分别在父进程和子进程内返回,子进程永远返回0,而父进程返回子进程的ID。os 模块的 getpid() 和 getppid() 分别用于获取当前进程及当前进程父进程的 ID

from multiprocessing import Process
import os

def run_proc(name):
    print('Run child process %s (%s)...' % (name, os.getpid()))
    print('Run parent process %s (%s)...' % (name, os.getppid()))

if __name__ ==
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值