python中的进程

系统资源占用量:
进程>线程>协程

一个程序里至少有一个主进程,一个主进程至少有一个主线程

进程
优点:
稳定性高,一个进程崩溃了。不会影响其他进程
缺点:
创建进程开销巨大
操作系统能同时运行进程数目有限

在Python中创建进程:
需要用到的模块和类:multiprocessing模块 Process类
创建进程对象:

p = Process(target=func, name=‘任务1’, args=(1, ‘aa’), kwargs=’’)
Process(target=函数, name=进程的名字,args=(给函数传递的参数—>需要是可迭代的参数))

启动进程并执行任务p.start()
只是执行了任务但是没有启动进程p.run()
中断该进程p.terminate()
获取当前进程idos.getpid()
获取父进程idos.getppid()

在使用多进程是,对于全局变量访问的策略:
在每一个全局变量里面都放一个m变量,
保证每个进程访问变量时互不干扰

import os
from multiprocessing import Process

n = 4

def func1(*args):
    global n
    n += 5
    print(os.getpid(), n, os.getppid(),)

def func2(*args):
    global n
    n += 6
    print(os.getpid(), n,os.getppid())

p1 = Process(target=func1,args=(1,))
p2 = Process(target=func2,args=(2,))

if __name__ == '__main__':
    p1.start()
    p2.start()

# 输出结果
15016 9 15600
17556 10 15600  # 可以看到两个进程的进程id是不同的,都对变量n进行了修改,得出的结果也是分开计算,互不干扰的

进程的自定义:

继承Process类,重写run方法
自定义在运行run方法的时候需要运行的代码

class Myprocess(Process):
    def run(self):
        pass
p = Myprocess()
Python中,进程、线程和协程是实现并发编程的不同方式。 1. 进程(Process)是操作系统分配资源的基本单位,每个进程有独立的内存空间,互不干扰。进程之间的通信需要使用特定的机制,如管道、消息队列等。在Python中,可以使用`multiprocessing`模块创建和管理进程。 2. 线程(Thread)是进程内的独立执行流,一个进程可以包含多个线程,它们共享相同的内存空间。线程之间的通信比进程更方便,可以使用共享内存或者全局变量。然而,由于全局解释器锁(GIL)的存在,同一时间只有一个线程在执行Python字节码,因此多线程在CPU密集型任务中并不能提高性能。但是对于I/O密集型任务,多线程可以提升效率。Python内置的`threading`模块提供了对线程的支持。 3. 协程(Coroutine)是一种轻量级的线程,由程序控制在特定位置进行挂起和恢复的并发执行。协程能够在执行过程中被暂停和继续,并且可以通过yield语句进行交互式通信。Python中的协程通过生成器函数(generator function)和`asyncio`库来实现。 总结一下: - 进程是资源分配的基本单位,进程之间资源独立,通信复杂。 - 线程是进程内的执行流,共享内存,通信相对方便,但受到GIL的限制。 - 协程是一种轻量级的线程,可以在特定位置挂起和恢复执行,并通过yield语句进行通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值