Python学习的第三十一天总结:多线程与多进程

多线程

线程的模块

import threading
thread
英 [θred]   美 [θred]  
n.
(棉、毛、丝等的)线;线索;脉络;思绪;思路;贯穿的主线;线状物;细细的一条
v.
穿(针);纫(针);穿过;(使)穿过;通过;穿行;穿成串;串在一起

线程对象的创建

创建一个线程,指向的函数,不接收参数的情况

t = threading.Thread(target=函数名)

创建一个线程,指向的函数,收参数的情况

t = threading.Thread(target=函数名, args=(实参1,))
target
英 [ˈtɑːɡɪt]   美 [ˈtɑːrɡɪt]  
n.
目标;指标;(攻击的)目标,对象;靶;靶子
v.
把…作为攻击目标;把…作为批评的对象;面向,把…对准(某群体)

让线程对象t开始工作

t.start()
start
英 [stɑːt]   美 [stɑːrt]  
v.
开始,着手,动手(做或使用);(使)发生,开始进行;开动;发动;启动
n.
开头;开端;开始;起始优势;良好的基础条件

主线程与子线程的关系

生命周期

我们的py文件运行起来的时候,就会有一个主线程

当子线程对象创建后,当子线程对象运行时,才会创造出来新的线程,叫做子线程

子线程如果代码没有运行结束,主线程是会等待子线程的

直接子线程全部运行完毕

主线程才会结束

进程与线程的关系

进程的主要功能

分配资源

线程的主要功能

执行任务

包含关系

进程包含线程

每开一个进程出来,都必然会有一个主线程

进程提供了资源(内存空间)

线程主要执行任务

多进程

多进程的模块

import multiprocessing

多种方式前进

创建一个进程对象

p = multiprocessing.Process(target=函数名)

让进程对象p开始工作

p.start()

multi
英 ['mʌlti]   美 [ˈmʌlti]  
n.
多种;多数
process
英 [ˈprəʊses , prəˈses]  美 [ˈprɑːses , prəˈses]  
n.
(为达到某一目标的)过程;进程;(事物发展,尤指自然变化的)过程,步骤,流程;做事方法;工艺流程;工序
v.
加工;处理;审阅,审核,处理(文件、请求等);数据处理
v.
列队行进;缓缓前进
第三人称单数: processes 复数: processes 现在分词: processing 过去式: processed 过去分词: processed
派生词: processing n.
记忆技巧:pro 向前 + cess 行走,前进 → 向前走的〔历程〕→ 过程
process的现在分词

ing代表正在进行某个事件

eat,吃

eating,正在吃

thread

threading

进程对象p的等待连接

p.join()

功能特性:

当代码读到这个命时

解释器会关注一下进程对象p它是否已经执行完成了

如果,没有执行完成,卡住

直到p的代码全部执行结束,才会通

查看进程的id

查看当前进程的id

os.getpid()
get,得到
p,process,进程
id,编号

查看当前进程的父进程id

os.getppid()
p,parent,父母

判断进程对象p是否存活


进程与线程的比较

多线程可以共享全局变量

在这里插入图片描述

多进程不可以共享全局变量

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/abcdhulei/article/details/89477707