进程和线程入门学习

进程和线程

一.多任务

1.优势:充分利用CPU资源,提高程序执行效率
2.任务:可以理解为函数/方法
3.两种表现形式:并发,并行
  • 并发:在一个时间段内快速交替的执行多个任务;单核CPU
  • 并行:在一段时间内真正同时一起执行多个任务;多核CPU

二.进程

1.概念:是资源分配的最小单位;通俗理解为一个正在运行的程序

三.多进程

1.概念:多进程是Python中实现多任务的一种方式;使用多进程可以提高程序执行效率
2.语法格式:
"""
多进程语法格式
"""
# 1.导包
from multiprocessing import Process


def func1():
    print('任务1...')


def func2():
    print('任务2...')


# 主进程main
if __name__ == '__main__':
    # 2.实例化子进程对象;参数target=待执行的任务名
    # 注意这里是任务名,不带圆括号
    process1 = Process(target=func1)
    process2 = Process(target=func2)

    # 3.调用start方法,启动子进程
    process1.start()
    process2.start()

3.在Python中多进程大多是并行;而多线程大多是并发

四.进程编号

pid: process id
ppid: parent process id
1.获取当前进程编号
os.getpid()
2.获取父进程编号
os.getppid()
3.语法格式:
"""
获取进程编号:
    获取当前进程编号:os.getpid()
    获取父进程编号:os.getpid()
通过下面的例子可以发现:
    1.子进程的父进程编号 == main的当前进程编号
    所以证明:main就是子进程的父进程
    2.每一次运行,进程的编号都不相同
"""
from multiprocessing import Process
import os


def func1():
    print('子进程func1', os.getpid(), os.getppid())
    print('任务1...')


def func2():
    print('子进程func2', os.getpid(), os.getppid())
    print('任务2...')


def func3():
    print('子进程func3', os.getpid(), os.getppid())
    print('任务3...')


if __name__ == '__main__':
    print('主进程main', os.getpid())

    process1 = Process(target=func1)
    process2 = Process(target=func2)
    process3 = Process(target=func3)

    process1.start()
    process2.start()
    process3.start()

4.current_processing方法:能够获取当前进程的名字和父进程的编号
from multiprocessing import Process
from multiprocessing import current_process


def func1():
    print('func1', current_process())
    print('func1名字', current_process().name)
    print('func1编号', current_process().pid, current_process().ident)


if __name__ == '__main__':
    print('主进程', current_process())
    print('主进程名字', current_process().name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值