目录
python的进程和线程
获取进程编号
线程的概念
进程和线程对比
python的进程和线程
当多个任务同时进行可以大大提高程序你的执行效率,比如一个某聊天软件可以登录两个账号且两个账号可以独立运行。
那么执行多任务表现形式有那些?
1.并发操作:如:一个人同时既可以一边看电视又可以一边嗑瓜子
2.并行操作:如:两个人同时一起盖房子,一个人负责搬砖和水泥,一个人负责切墙
进程的概念:
进程是是资源分配的最小单位,它是操作系统进行资源分配和调度运行的基本单位,通俗理解:一个正在运行的程序就是一个进程。
#程序1
def test01():
print('我是程序1')
def test02():
print("我是程序2")
test01()
test02()
#在这种情况下,程序的执行的顺序是 test01() test02()
那么如何将两个程序同时运行呢?可以导入进程包?multiprocessing
#导入进程包
import multiprocessing
#程序1
def test01():
print('我是程序1')
def test02():
print("我是程序2")
test01_process = multiprocessing.Process(target=test01)
test02_process = multiprocessing.Process(target=test02)
test01_process.start()
test02_process.start()
获取进程编号
当程序中进程的数量越来越多时 , 如果没有办法区分主进程和子进程还有不同的子进程 , 那么就无法进行有效的进程管理 , 为了方便管理实际上每个进程都是有自己编号的。
1.获取当前进程的编号? ? getpid()
2.获取当前进程的父进程?getppid()
import os
def test01():
# 获取当前进程的编号
print('test01进程编号', os.getpid())
# 获取父进程的编号
print('test01父进程的编号', os.getppid())
test01()
线程的概念
想要实现多任务还可以使用多线程来完成.
线程是程序执行的最小单位 , 实际上进程只负责分配资源 , 而利用这些资源执行程序的是线程 , 也就说进程是线程的容器 , 一个进程中最少有一个线程来负责执行程序 。同时线程自己不拥有系统资源,只需要一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
import threading
def test01():
for i in range(3):
print('听音乐...')
def test02():
for i in range(3):
print('敲代码...')
music_thread = threading.Thread(target=test01)
coding_thread = threading.Thread(target=test02)
music_thread.start()
coding_thread.start()
进程和线程对比
关系对比 | 区别对比 | 优缺点对比 | 线程是依附在进程里面的,没有进程就没有线程。 | 创建进程的资源开销要比创建线程的资源开销要大 | 进程可以多核资源开销大 | 一个进程默认提供一条线程,进程可以创建多个线程。 | 进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位 | 线程资源开销小,但是不能多核 |
本周结束,下周继续。
|