单核CPU:时间片轮转

并行:CPU的个数大于等于任务数 真的多任务执行

并发:CPU的个数小于任务数 假的多任务

知识点:

  多线程共享全局变量

创建线程的两种方法:

1.创建子线程方法 调用函数 Thread(target=函数名)

 # 导入threading包
import threading
import time def sing():
for i in range(5):
print("------唱------%d----" % i)
time.sleep(1) # 如果创建的Thread时指定的函数,运行结束,那么意味着 这个子线程结束了 def dance():
for i in range(5):
print("------跳------%d----" % i)
time.sleep(1) def main():
# threading.Thread(target=函数名) 注意 函数名后面不能带() 有()是调用
21 # 创建线程对象
22 t1 = threading.Thread(target=sing)
23 t2 = threading.Thread(target=dance) # 开启子线程 让线程开始执行 创建线程
t1.start()
t2.start() # 查看当前运行的线程 threading.enumerate() 返回值是个列表
print(threading.enumerate()) # 查看当前线程数 len()
print(len(threading.enumerate()))

2,创建子线程类

 import threading
import time # 创建子线程类
class MyThread(threading.Thread):
7 # 必须定义run()方法
8 def run(self):
pass if __name__ == '__main__':
# 创建对象
t = MyThread()
# 启动线程 start()里边会调用run()方法
t.start()

多任务创建-线程(IO密集型适用)的更多相关文章

  1. 你创建线程池最好分为两种线程池,io密集型线程池,或者cpu密集型线程池

    你创建线程池最好分为两种线程池,io密集型线程池,或者cpu密集型线程池. 否则,如果只用一个线程池的话,不管是iO密集的线程,或者cpu消耗大的都放在同一个线程池的话,会发生线程池被撑满的情况

  2. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程 并行与并发 同步与异步 阻塞与非阻塞 CPU密集型与IO密集型 线程与进程 进 ...

  3. Python并发编程05 /死锁现象、递归锁、信号量、GIL锁、计算密集型/IO密集型效率验证、进程池/线程池

    Python并发编程05 /死锁现象.递归锁.信号量.GIL锁.计算密集型/IO密集型效率验证.进程池/线程池 目录 Python并发编程05 /死锁现象.递归锁.信号量.GIL锁.计算密集型/IO密 ...

  4. IO密集型操作时,为什么线程比进程更好?

    在IO密集型的操作时,进程线程都不会太占用CPU,但是进程消耗的资源比较多.

  5. Python进阶----GIL锁,验证Cpython效率(单核,多核(计算密集型,IO密集型)),线程池,进程池

    day35 一丶GIL锁 什么是GIL锁:    存在Cpython解释器,全名:全局解释器锁.(解释器级别的锁) ​   GIL是一把互斥锁,将并发运行变成串行. ​   在同一个进程下开启的多个线 ...

  6. CPU密集型和IO密集型(判断最大核心线程的最大线程数)

    CPU密集型和IO密集型(判断最大核心线程的最大线程数) CPU密集型 1.CPU密集型获取电脑CPU的最大核数,几核,最大线程数就是几Runtime.getRuntime().availablePr ...

  7. SpringBoot开发案例之多任务并行+线程池处理

    前言 前几篇文章着重介绍了后端服务数据库和多线程并行处理优化,并示例了改造前后的伪代码逻辑.当然了,优化是无止境的,前人栽树后人乘凉.作为我们开发者来说,既然站在了巨人的肩膀上,就要写出更加优化的程序 ...

  8. cpu,io密集型计算概念

    I/O密集型 (CPU-bound) I/O bound 指的是系统的CPU效能相对硬盘/内存的效能要好很多,此时,系统运作,大部分的状况是 CPU 在等 I/O (硬盘/内存) 的读/写,此时 CP ...

  9. springboot之多任务并行+线程池处理

    最近项目中做到一个关于批量发短信的业务,如果用户量特别大的话,不能使用单线程去发短信,只能尝试着使用多任务来完成!我们的项目使用到了方式二,即Future的方案 Java 线程池 Java通过Exec ...

随机推荐

  1. 伸缩布局 Flex

    其中在webkit内核的浏览器中使用时,必须加上-webkit-前缀,采用Flex布局的元素,称为Flex容器(flex container),简称”容器”.它的所有子元素自动成为容器成员,称为Fle ...

  2. HTTP权威指南-URL与资源

    URL与资源 URL是URI的子集 方案(http),主机(www.baidu.com),路径(/home/logo.png) 方案,其实有很多,HTTP.HTTPS.FTP,SMTP等等. http ...

  3. go零碎总结

    1.go里通过首字母大小写来区分它是私有的还是公有的,比如对于一个结构体属性一般就以大写开头(和Java不一样,不需要什么getter,setter方法):而对于方法而言,它是隶属于包(包名一定是小写 ...

  4. labelme2coco问题:TypeError: Object of type 'int64' is not JSON serializable

    最近在做MaskRCNN 在自己的数据(labelme)转为COCOjson格式遇到问题:TypeError: Object of type 'int64' is not JSON serializa ...

  5. c#序列化基类(包含派生类继承DynamicObject和 IXmlSerializable)对象

    直接上代码 using System.Diagnostics; using System.Text; using System.Xml; using System.Xml.Schema; using ...

  6. C++_向函数传递对象

    向函数传递对象 1. 使用对象作为函数参数 对象可以作为参数传递给函数,其方法与传递其他类型的数据相同. 在向函数传递对象时,是通过传值调用传递给函数的. 因此,函数中对对象的任何修改均不影响调用该函 ...

  7. Python学习-55 小游戏- 猜大小

    #游戏开始,首先玩家选择大小,选择完成后开始摇骰子(11<=总值<=18为大,3<=总值<=10为小) import random def roll_dice(numbers= ...

  8. go guid 和uuid生成

    1 安装 开始-运行 输入 cmd 回车 输入 go get -u github.com/typa01/go-utils 安装完毕后 2 使用 a 首先引入包 import (      goutil ...

  9. linux测试umask

    客户需求,由于ftp服务器权限管理需要,测试能否通过修改oracle umask值,达到expdp导出文件权限,导出即是想要的权限. Session [oracle@adg1 ~]$ umask [o ...

  10. 采用二进制方式安装K8S集群,版本etcd-v3.3.10,flannel-v0.11.0,kubernetes-server-linux-amd64

    官方提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环 ...