(P1-P3)并发编程引言

1.python程序提速大的方法

  • python多线程并发 VS python多CPU并行
    在这里插入图片描述

2.Python对并发编程的支持

  • 多线程:threading,利用CPU和IO可以同时执行的原理,让CPU不会干巴巴等待IO完成

  • 多进程:multiprocessing,利用多核CPU的能力,真正的并行执行任务

  • 异步IO:asyncio,在单线程利用CPU和IO同时执行的原理,实现函数异步执行

  • 使用Lock对资源加锁,防止冲突访问

  • 使用Queue实现不同线程/进程之间的数据通信,实现生产者-消费者模式

  • 使用线程池Pool/进程池Pool,简化线程/进程的任务提交、等待结束、获取结果

  • 使用subprocess启动外部程序的进程,并进行输入输出交互

  • Python并发编程有三种方式
    多线程Thread、多进程Process、多协程Coroutine

3.CPU密集型计算、IO密集型计算?

  • CPU密集型(CPU-bound):Bound表示受限制的意思;
    CPU密集型(CPU-bound):
    Bound表示受限制的意思
    (1)CPU密集型也叫计算密集型,是指I/O在很短的时间就可以完成,CPU需要大量的计算和处理,特点是CPU占用率相当高
    (2)例如:压缩解压缩、加密解密、正则表达式搜索

  • IO密集型(I/O bound):
    (1)IO密集型指的是系统运作大部分的状况是CPU在等I/O (硬盘/内存/网络) 的读/写操作,CPU占用率仍然较低。
    (2)例如:文件处理程序、网络爬虫程序、读写数据库程序

4.多线程、多进程、多协程的对比

在这里插入图片描述

  • 怎样根据任务选择对应技术?
    在这里插入图片描述

5.Python速度慢的两大原因

  • Python 速度慢的原因1
    动态类型语言
    边解释边执行
    由于速度慢的原因,很多公司的基础架构代码依然用C/C++开发:从源码翻译成机器码,机器码速度快,比如各大公司阿里/腾讯/快手的推荐引擎、搜索引擎、存储引擎等底层对性能要求高的模块

  • Python 速度慢的原因2
    GIL
    导致无法利用多核CPU并发执行

6.GIL

  • 全局解释器锁(英语:Global Interpreter Lock,缩写GIL)
    是计算机程序设计语言解释器用于同步线程的一种机制,它使得任何时刻仅有一个线程在执行。
    即便在多核心处理器上,使用 GIL 的解释器也只允许同一时间执行一个线程。

  • 由于GIL的存在,即使电脑有多核CPU,单个时刻也只能使用1个,相比并发加速的C++/JAVA所以慢,C++/JAVA的多线程程序会分配到多核上去执行

  • 为什么有GIL这个东西?
    为了解决多线程之间数据完整性和状态同步问题
    GIL确实有好处:简化了Python对共享资源的管理;
    原因如下:Python中对象的管理,是使用引用计数器进行的,引用数为0则释放对象
    开始:线程A和线程B都引用了对象obj,obj.ref_num = 2,线程A和B都想撤销对obj的引用
    在这里插入图片描述

  • 怎样规避GIL带来的限制?
    (1)多线程 threading 机制依然是有用的,用于IO密集型计算
    因为在 I/O (read,write,send,recv,etc.)期间,线程会释放GIL,实现CPU和IO的并行,因此多线程用于IO密集型计算依然可以大幅提升速度;
    但是多线程用于CPU密集型计算时,只会更加拖慢速度;
    (2)使用multiprocessing 的多进程机制实现并行计算、利用多核CPU优势
    为了应对GIL的问题,Python提供了multiprocessing

  • 参考:链接

### 回答1: Codesys是一款用于编程控制器的软件平台,支持多种编程语言和控制器型号。Codesys V3是该软件的最新版本,相比V2版本增加了许多新特性和功能。本篇文章的主题是Codesys V3的基础编程指南,共涉及到了P1至P5五个章节。 P1章节介绍了Codesys V3的基本概念和功能,包括编程方法、数据类型、变量等基础知识,还讲解了代码的组织结构和程序的执行流程等方面的内容。 P2章节主要介绍了Codesys V3的编程语言,包括Ladder Diagram(梯形图)、Function Block Diagram(功能块图)和Structured Text(结构化文本)三种基本语言,同时还针对不同编程语言的特点和内部结构进行了介绍。 P3章节中讲解了Codesys V3的数据存储与读写方法,包括内存区域的划分、数据类型的选择、变量的定义以及如何从外部设备(如PLC、传感器)读取数据,并进行处理和控制等方面的内容。 P4章节则介绍了Codesys V3的程序调试和测试方法,包括在线调试、离线模拟和虚拟化测试等多种方式,用于验证代码的正确性和性能,并进行故障诊断和修复。 最后,P5章节则是对前四章内容的实践案例,通过对机器人控制、工业自动化、流水线控制等多个场景的控制方法和实现过程的演示,帮助读者更好地理解和掌握Codesys V3的编程技术和应用方法。 总之,本篇编程指南涵盖了Codesys V3编程的基础知识和应用技术,适合有一定编程基础或对控制器编程感兴趣的读者参考。 ### 回答2: CodeSys V3是一种基于IEC 61131-3标准的编程软件,包括5个编程语言:Ladder Diagram(LD)、Function Block Diagram(FBD)、Structured Text(ST)、Instruction List(IL)和Sequential Function Chart(SFC)。本指南从P1到P5共5个步骤,详细介绍CodeSys V3的基础编程技巧。 在P1中,介绍了如何创建一个新工程,并通过了解CodeSys V3的用户界面来导航软件。然后,教授如何创建一个新程序并选择正确的硬件配置。在这个过程中,学习者会学到如何在不同编程语言和对象之间切换。 在P2中,学习者将学习如何创建变量并进行数据类型设置。这个步骤中的实际例子将帮助学生们理解如何将变量设置为输入输出,并将其与PLC的物理输入输出连接起来。 在P3中,学习者将熟悉编程语句,例如IF语句和WHILE循环,以及盒式图和结构化文本语言。在本章中,学习者将运用这些语句来编写简单的程序。 在P4中,学习者将实践如何创建函数块和函数。这将为学生提供思考如何使用编程语言组织PLC程序的机会,并深入了解多个变量和多个函数的交互。 在P5中,学习者将了解如何注释PLC编程以及在代码中添加跟踪。教师将解释如何使用CodeSys V3的功能来帮助学生更好地调试和理解PLC程序。 在这个指南中,学习者将掌握使用CodeSys V3编程所需的基础技能。在PLC编程中掌握CodeSys V3语言是非常重要的,因为它是SCADA系统的核心之一,广泛用于自动化领域。 ### 回答3: CODESYS V3是一种全新的编程平台,它针对于PLC进行编程开发,能够深入挖掘PLC的潜力,让PLC实现更加复杂和精准的控制功能。CODESYS V3编程采用的是多语言编写,支持不同的PLC品牌,可扩展性很高。CODESYS V3为PLC用户提供了极为便捷的编程工具,使得编程操作更加简单直观,代码编写更加高效。 CODESYS V3编程指南P1-P5全面详尽地讲解了CODESYS V3的基础知识和编程技能。在本篇指南中,你将学到如何创建和配置PLC项目,如何使用不同种类的数据类型,如何定义变量和常量等基础知识。同时,您还将学会如何使用不同的编程语言,例如ST、LD、FBD等,以及如何进行程序调试和错误处理。 除此之外,CODESYS V3编程指南还介绍了一些高级编程技巧,例如模块化编程、函数库编写、面向对象编程等。这些技巧将使您的代码更加清晰、可维护性更高,从而提高您的开发效率和质量。 总之,CODESYS V3编程指南P1-P5全深入浅出地介绍了CODESYS V3编程的基础知识和技能,是PLC编程开发工程师不可或缺的学习资料。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢打篮球的普通人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值