当前位置: 首页 > news >正文

进程/线程

进程是资源单位, 线程是执行单位。

每一个进程至少要有一个线程,启动每一个程序默认都会有一个主线程

1.多线程的两种实现

from threading import Thread#方法一
def func(name):for i in range(10):print(name, i)if __name__ == '__main__':t = Thread(target=func, args=("jerry",))      # 创建线程并给线程安排任务#参数必须是元组,且最后一个参数后面的逗号不能忘t.start()                   # 多线程状态为可以开始工作状态, 具体的执行时间由CPU决定for i in range(10):print("main", i)#方法二
class MyThread(Thread):              #创建一个类MyThread,继承父类Thread,#可以使用构造函数def __init__(self) 传递参数def run(self):                   # 固定的    -> 当线程被执行的时候, 被执行的就是run()for i in range(1000):print("子线程", i)if __name__ == '__main__':t = MyThread()# t.run()                      # 不能用t.run(), 调用了类中的run()方法,为单线程t.start()                      # 开启线程for i in range(1000):print("主线程", i)

 2.多进程的两种实现

与多线程的实现方法基本一样 

from multiprocessing import Processdef func():for i in range(1000):print("子进程", i)if __name__ == '__main__':p = Process(target=func)p.start()for i in range(1000):print("主进程", i)

 3.进程池,线程池

# 线程池: 一次性开辟一些线程. 我们用户直接给线程池子提交任务. 线程任务的调度交给线程池来完成
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutordef fn(name):for i in range(1000):print(name, i)if __name__ == '__main__':# 创建50个线程池with ThreadPoolExecutor(50) as t:for i in range(100):t.submit(fn, name=f"线程{i}")# 等待线程池中的任务全部执行完毕. 才继续执行(守护)print("123")

http://www.lryc.cn/news/215667.html

相关文章:

  • Python 应用 之 转换音频格式
  • Oracle JDK 和OpenJDK两者有什么异同点
  • GPT引发智能AI时代潮流
  • FreeSWITCH mrcp-v2小记
  • 如何将你的PC电脑数据迁移到Mac电脑?使用“迁移助理”从 PC 传输到 Mac的具体操作教程
  • Elasticsearch集群搭建、数据分片以及位置坐标实现附近的人搜索
  • 深度学习_3 数据操作之线代,微分
  • 树莓派安装Ubuntu22.04LTS桌面版
  • Rust编程基础之函数和表达式
  • 关于preempt count的疑问
  • Windows 开启 Kerberos 的火狐 Firefox 浏览器访问yarn、hdfs
  • 华为云资源搭建过程
  • 突破防火墙的一种方法
  • Docker 多阶段构建的原理及构建过程展示
  • 【开题报告】基于Spring Boot的家装产品展示交易平台的设计与实现
  • MacOS安装git
  • 京东协议算法最新版
  • 软考系统架构设计师案例分析知识汇总
  • MyBatis-plus 代码生成器
  • 运维常识——网络
  • 《研发效能(DevOps)工程师》课程简介(一)丨IDCF
  • OMV 介绍及安装
  • JAVA 实现PDF转图片(spire.pdf.free版)
  • 高效学习工具之AnkiMobile新手入门指南(ios端,包括ipad、ihpone设备)————创建、使用、备份、设置参数、相关资料
  • LiveMeida视频接入网关
  • 我和云栖有个约会
  • 模拟官网编写自定义Grafana Dashboard
  • 组件局部注册和全局注册
  • 【数据结构】模拟实现stack
  • Hive创建分区表并插入数据