python中进程和线程

应用场景:多任务
多任务:指在同一时间内执行多个任务

多任务:

并发:在一段时间内交替去执行任务。
并行:对于处理CPU多任务,操作系统会给CPU的每个内核安排一个执行的软件,多个内核是正在的一切执行软件。

进程概念:

概念:一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说
每次启动一个进程,操作系统都会给它分配一定的运行资源(内存资源)保证进程的运行。
注意:一个程序运行后就是一个进程,一个进程默认有一个线程,进程里面可以创建多个线程,
线程是依附在进程里面的,没有进程就没有线程。

进程应用的案例:

# 1 导入进程包
import multiprocessing
import os


# 2 添加任务
# 任务一
def sing():
    # 获取当前进程的编号
    print("sing的编号是:", os.getpid())
    # 获取当前父进程编号
    print("sing父进程的编号是:", os.getppid())
    for i in range(5):
        print("唱歌中....")


# 任务二
def dance(count):

    # 获取当前进程的编号
    print("dance的编号是:", os.getpid())
    # 获取当前父进程编号
    print("dance父进程的编号是:", os.getppid())
    for i in range(count):
        print("跳舞中....")


# 3 任务启动入口
if __name__ == '__main__':

    # 进程配置
    sing_process = multiprocessing.Process(target=sing)
    # 此处args(必须传元组形式) ,或着 kwargs都可以进行传参
    dance_process = multiprocessing.Process(target=dance, args=(5,))
    # 启动进程
    sing_process.start()
    # 主进程等待添加数据的子进程执行完成以后程序再继续往下执行,读取数据
    sing_process.join()  # 没有join输出会错乱
    dance_process.start()

    """
    进程守护的两种方式-----未作正确展示
    # 设置守护主进程的方式: 子进程对象.daemon=True
    # 或者销毁子进程:子进程对象.terminate()
    # 用法示例:
    # sing_process.daemon=True
    # sing_process.terminate()
    """

线程概念:

概念:线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码,需要CPU进行调度。
线程是CPU调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。
说明:程序启动默认就会有一个主线程,自己创建的线程称为子线程,多线程可以完成多任务。

线程应用案例:

# 1 导包
import threading

# 此处使用了互斥锁---本文未介绍
lock1 = threading.Lock()
lock2 = threading.Lock()


# 2 创建应用
def first():
    for i in range(1, 53, 2):
        lock1.acquire()
        print(i, end="")
        print(i+1, end="")
        lock2.release()


def second():
    for j in range(65, 91):
        lock2.acquire()
        print(chr(j))
        lock1.release()


# 3 启动应用
if __name__ == '__main__':
    # 应用配置
    first_thread = threading.Thread(target=first)
    second_thread = threading.Thread(target=second)
    # 启动线程
    lock2.acquire()
    first_thread.start()
    second_thread.start()

进程和线程的对比:
1 关系对比:
线程依附于进程,没有进程就没有线程。
一个进程默认提供一条主线程,进程可以创建多个线程。
2 区别对比:
进程之间不共享全局变量。
线程之间共享全局变量,但是要注意资源竞争的地方,解决办法:互斥锁或者线程同步。
创建进程的资源开销要比创建线程的资源开销大。
进程是内存资源分配的基本单位,线程是CPU调度的基本单位。
线程不能独立执行,必须依存于进程中。
多进程开发比单进程开发稳定性要强。
3 优缺点对比:
进程优缺点:
    优点:可以使用多核。
	缺点:资源开销过大。
线程的优缺点:
	优点:资源开销小。
	缺点:不能使用多核。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值