python中的线程和进程。
1.什么是进程和线程。
1.1 进程的概念
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,每个进程都有自己的地址空间、内存、数据栈及其它记录其运行轨迹的辅助数据。
1.2 线程的概念
线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。
1.3 线程和进程的关系。
进程和线程的关系:
一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
资源分配给进程,同一进程的所有线程共享该进程的所有资源。
处理机分给线程,即真正在处理机上运行的是线程
线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。线程是指进程内的一个执行单元,也是进程内的可调度实体.
进程与线程的区别:
调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
2. Python中多线程的概念
前面解释了线程和进程分别是什么,并且有哪些区别主要作为概念了解下。
2.1 多线程
多线程就是允许一个进程内存在多个控制权,以便让多个函数同时处于激活状态,从而让多个函数的操作同时运行,理论上多线程相当于一个并发(concunrrency)系统。并发系统一般同时执行多个任务。多个任务可以实现共享资源。
但是在并发情况下,指令执行的先后顺序由内核决定。同一个线程内部,指令按照先后顺序执行,但不同线程之间的指令很难说清除哪一个会先执行。因此要考虑多线程同步的问题。同步(synchronization)是指在一定的时间内只允许某一个线程访问某个资源。
2.2 python多线程的作用,原理,缺陷
作用:提高程序执行速度
原理:多线程能够提高执行速度的原因是什么?假如一个程序包含多个子任务,这些任务相互独立,没有因果关系。
a.单线程情况下,执行过程中,某个子任务在等待I/O,然而I/O到来的时间不确定,cpu时间耗在毫无意义的等待上,程序执行时 间也将加上这一段等待的时间。
b.多线程情况下,若某个子任务等待I/O,可切换出其他线程执行,等到合适的时机(I/O到达)再切换回该线程,避免了cpu无意义 的等待,也降低了程序的执行时间。
缺陷:由于GIL的存在,python多线程中只能有一个线程会被执行,无论你启多少个线程,你有多少个cpu, Python在执行的时候 会淡定的在同一时刻只允许一个线程运行。(由于切换的速度比较快看起来像并发原理,实际并不是一种并发)。
3.如何开启多线程
3.1如何启用线程
python多线程模块threading。
3.1.1 定义函数来开启多线程
import threading
import timedef func(name):print("hello", name)time.sleep(3)t1 = threading.Thread(target=func,args=("ycw",))
t2 = threading.Thread(target=func,args=("sjy",))t1.start() # 并发
t2.start() # 并发# func("ycw") # 先执行
# func("sjy") # 再执行
3.1.2 定义类方法来开启多线程
#! /usr/bin/env python3
# -*- coding:utf-8 -*-import threading
import time# tread类方法调用
class MyTread(threading.Thread):def __init__(self,name):super(MyTread,self).__init__()self.name = namedef run(self):print("hello",self.name)time.sleep(3)t1 = MyTread("ycww")
t2 = MyTread("sjyy")t1.start() # 并发
t2.start() # 并发
以上就是开启多线程的两种方法。
python中的线程和进程。相关推荐
- 解析Python中的线程与进程
1 基础知识 现在的 PC 都是多核的,使用多线程能充分利用 CPU 来提供程序的执行效率. 1.1 线程 线程是一个基本的 CPU 执行单元.它必须依托于进程存活.一个线程是一个execution ...
- Python中的线程、进程、协程以及区别
进程,是执行中的计算机程序.也就是说,每个代码在执行的时候,首先本身即是一个进程.一个进程具有:就绪,运行,中断,僵死,结束等状态(不同操作系统不一样). 运行中每个进程都拥有自己的地址空间.内存.数 ...
- python停止线程池_详解python中Threadpool线程池任务终止示例代码
需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...
- python脚本自动运行失败_解决Python中定时任务线程无法自动退出的问题
python的线程有一个类叫Timer可以,用来创建定时任务,但是它的问题是只能运行一次,如果要重复执行,则只能在任务中再调用一次timer,但这样就存在新的问题了,就是在主进程退出后,不能正常退出子 ...
- Python中的线程间通信
Python中的线程间通信 文章目录 Python中的线程间通信 1.Queue 2.同步机制 1.Event 2.Semaphore(信号量) 3.Lock(锁) 4.RLock(可重入锁) 5.C ...
- python threading timer 退出_解决Python中定时任务线程无法自动退出的问题
python的线程有一个类叫Timer可以,用来创建定时任务,但是它的问题是只能运行一次,如果要重复执行,则只能在任务中再调用一次timer,但这样就存在新的问题了,就是在主进程退出后,不能正常退出子 ...
- python之路--线程和进程
线程 python中有关线程的有两个模块比较常用 分别是thread和threading. 首先说为什么要用线程呢.正如那句话吃着火锅听着歌. 像之前写的python程序,程序执行,每时刻只有一个任务 ...
- python中的线程技术
#!/user/bin/env python # @Time :2018/7/7 11:42 # @Author :PGIDYSQ #@File :DaemonTest.py import threa ...
- python协程和线程区别_python中的线程和协程之间有什么区别
一.首先我们来了解一下线程和协程的概念1.线程线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源( ...
最新文章
- 实验吧--web--天下武功唯快不破
- 跨域、ContentType组件
- MFC模块状态(一)
- 东方通 启动服务访问不到_使用金万维宽带通动态域名服务实现速达3000异地访问...
- 必背单词_考研英语语法如何高效自学? 真题必背单词Day12
- activemq部署
- 基于词嵌入技术的微博博文情感分析系统设计实现
- Memory for crash kernel (0x0 to 0x0) notwithin permissible range
- 西瓜直播怎么录屏游戏
- logo语言是计算机语言吗,LOGO语言的编程
- mongo分片集群部署
- 洛谷 P2142 高精度减法
- 燃气管道运行全局实时监控系统-海城支线总页面
- RN8215芯片 32768Hz晶体停振案例分析
- 云-阿里云-百科:阿里云
- Java实现二阶魔方旋转
- 咸鱼前端—html初识
- 3D游戏建模师职业现状:大学生毕业就是失业,真的这么可怕吗
- ubuntu设置网卡默认启动_ubuntu 网络配置
- uoj265【2016提高】愤怒的小鸟(状压dp)