20170530——进程_多进程_共享数据

Sa-Token权限框架实战:从入门到企业级应用 权限认证是系统安全的核心组件,主流方案包括RBAC模型、JWT令牌和会话管理。Sa-Token作为轻量级Java权限框架,通过注解式配置和内置会话管理,显著简化了权限系统开发流程。该框架支持分布式会话、踢人下线等企业级功能,特别适合前后端分离架构。在实际工程中,Sa-Token仅需30行代码即可实现基础鉴权,相比传统方案开发效率提升80%。本文通过电商系统案例,详解如何利用Redis集成、本地缓存优化等技术手段,构建高性能权限控制系统,并分享权限缓存失效、JWT令牌优化等典型问题的解决方案。 阅读详情

进程

进程阻塞:
multiprocessing.lock()
定义一个进程(把阻塞当做实参args):
#args=(,)必须是一个元组,num是for循环创建的第几个进程
multiprocessing.Process(target=showdatax,args=(lock,num)).start         
多进程:
threading和multiprocessing的一些理解
  • multiprocessing包是Python中的多进程管理包。
  • 与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程。
  • 该进程可以运行在Python程序内部编写的函数。
  • 该Process对象与Thread对象的用法相同,也有start(), run(), join()的方法。
  • 此外multiprocessing包中也有Lock/Event/Semaphore/Condition类 (这些对象可以像多线程那样,通过参数传递给各个进程),用以同步进程,其用法与threading包中的同名类一致。
  • 所以,multiprocessing的很大一部份与threading使用同一套API,只不过换到了多进程的情境。

注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以
import os
pid = os.fork()     #fork之后会记录父进程的值,子进程为0
if pid == 0:
    print('哈哈1')
else:
    print('哈哈2')
##运行结果
哈哈2
哈哈1

10_获取进程编号id:

获取当前进程的pid的方法为:getpid()

获取父进程的pid的方法为:getppid()

#coding=utf-8
import os
import time
# 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以
pid = os.fork()
if pid == 0:
    print('哈哈1---pid = %d---ppid = %d----'%(os.getpid(), os.getppid()))
else:
    print('哈哈2---pid = %d---'%os.getpid())
time.sleep(1)
11_区分线程和进程————获取名字、id
线程可以获取当前名字:threading.current_thread().name

进程可以获取当前名字:
p1 = multiprocessing.Process(target=showname,args=("go1",))
print(p1.name)      #Process-1
        也可以获取pid:
        print(p1.pid)   #7708
小结__常用过去进程pid值得方法是去进程执行的目标函数内os.getpid 或os.getppid
def  showname(name):
    time.sleep(2)
    print("hello",name,os.getpid(),os.getppid())

20_subprocess标准子进程
import  subprocess

pingP=subprocess.Popen(args="ping www.qq.com",shell=True)#shell进程
pingP.wait()#主进程等待子进程结束
print(pingP.pid)#进程ID
print(pingP.returncode)#返回值  成功结果返回0(至少表现出来是这样的)
##运行结果
正在 Ping www.qq.com [182.254.18.159] 具有 32 字节的数据:
来自 182.254.18.159 的回复: 字节=32 时间=20ms TTL=52
来自 182.254.18.159 的回复: 字节=32 时间=10ms TTL=52
来自 182.254.18.159 的回复: 字节=32 时间=11ms TTL=52
来自 182.254.18.159 的回复: 字节=32 时间=16ms TTL=52

182.254.18.159 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 10ms,最长 = 20ms,平均 = 14ms
11924
0
21_subprocess标准子进程+管道Pipe
import  subprocess
import  time
pingP=subprocess.Popen(args=["ping","www.qq.com"],
                       shell=True,
                       stdout=subprocess.PIPE)#shell进程
print(pingP.poll())     #进程状态
pingP.wait()    #强制要求主进程等待子进程结束
time.sleep(0.0000001)
# pingP.kill()  #杀死进程
print(pingP.stdout.read().decode("GBK"))#read是UTF-8,转化为GBK
print(pingP.pid)    #进程ID
print(pingP.returncode)     #返回值
##运行结果
None            #子进程处于运行状态,未执行完,所以子进程返回None

正在 Ping www.qq.com [182.254.18.159] 具有 32 字节的数据:
来自 182.254.18.159 的回复: 字节=32 时间=9ms TTL=52
来自 182.254.18.159 的回复: 字节=32 时间=20ms TTL=52
来自 182.254.18.159 的回复: 字节=32 时间=7ms TTL=52
来自 182.254.18.159 的回复: 字节=32 时间=6ms TTL=52

182.254.18.159 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 6ms,最长 = 20ms,平均 = 10ms

4912
0       #强制要求主进程等待子进程完成才结束程序,子进程执行完,所以返回0
小结____subprocess

我们可以使用subprocess包来创建子进程,但这个包有两个很大的局限性:
1) 我们总是让subprocess运行外部的程序,而不是运行一个Python脚本内部编写的函数。
2) 进程间只通过管道进行文本交流。
以上限制了我们将subprocess包应用到更广泛的多进程任务。

这样的比较实际是不公平的,因为subprocessing本身就是设计成为一个shell,而不是一个多进程管理包。


30_多进程
#-*- coding=utf-8 -*-
from multiprocessing import Process
import os
# 子进程要执行的代码
def run_proc(name):
    print('子进程运行中,name= %s ,pid=%d...' % (name, os.getpid()))
if __name__=='__main__':
    print('父进程 %d.' % os.getpid())
    p = Process(target=run_proc, args=('test',))
    print('子进程将要执行')
    p.start()
    p.join()
    print('子进程已结束')
##运行结果
父进程 7488.
子进程将要执行
子进程运行中,name= test ,pid=10844...
子进程已结束
40_进程通讯——管道Pipe
import multiprocessing

def  func(conn): #conn管道数据类型
    conn.send([1,2,3,4,5])#发送数据
    print(conn.recv())
    conn.close()#关闭

if __name__=="__main__":
    #如果duple=False,管道为单向,conn_A只能接受,conn_B只能发送
    conn_A,conn_B=multiprocessing.Pipe(duplex=True)     #开启管道    duplex默认为True,双向管道
    print(type(conn_A),type(conn_B))
    print(id(conn_A),id(conn_B))
    #开启管道
    p=multiprocessing.Process(target=func,args=(conn_B,))
    p.start()
    conn_A.send(["a","b","c"])
    print(conn_A.recv())#收数据
    p.join()
50_进程池Pool
import  multiprocessing
import time

def  go(i):
    time.sleep(3)
    print("第%d次"%i)
    return  i+100

def  show(arg):
    print("what---->",arg)

if __name__=="__main__":
    pool=multiprocessing.Pool(5)#创建一个进程池有5个进程
    print("start")
    for  i  in range(10):
        pool.apply_async(func=go,args=(i,),callback=show)   #进程并发(5个一起执行),并发返回值,不阻塞主进程(主进程直接print("end")),callback获取返回的值,当做show的实参
        #print(pool.apply(func=go, args=(i,)))  #进程同步,阻塞主进程(等待所有子进程执行完,才print("end")),无法get值,处理结果
        # print(pool.apply_async(func=go, args=(i,)).get())    #进程同步(一个一个执行),可以get出值,作另外的插座
        #go,函数,args参数,callback处理结果
    print("end")
    pool.close()#封闭进程池,不再添加
    pool.join()#等待

#apply_async异步,处理结果,start end->执行
#apply,不可以处理结果,start,end 之间执行
#print(pool.apply_async(func=go, args=(i,)).get()) 获取进程返回结果start,end 之间执行
##执行结果          #不阻塞主进程,直接print(”end“)
start
end
第0次
what----> 100
第1次
what----> 101
第2次
what----> 102
第3次
what----> 103
第4次
what----> 104
第5次
what----> 105
第6次
what----> 106
第7次
what----> 107
第8次
what----> 108
第9次
what----> 109
60_每个进程独享各自的list资源
import  multiprocessing
import time
import os
#进程安全,可以收集,每个进程拷贝一份,不安全(list,set,tuple,dict)
datalist=[]#每个进程都有单独全局变量,每个进程拷贝一份,互相独立

def adddata(i):
    datalist.append(i)
    print("hello",i)
    print(os.getpid(),datalist)#打印每个进程list


if __name__=="__main__":
    for i  in range(10):
        p=multiprocessing.Process(target=adddata,args=(i,))
        p.start()

    time.sleep(10)
    print("datalist",datalist)
    for i  in datalist:
        print(i)
#有0到9,10个进程,每一个数字代表一个进程
hello 0
612 [0]
hello 2
5484 [2]
hello 1
9468 [1]
hello 3
11412 [3]
hello 4
11852 [4]
hello 6
6376 [6]
hello 7
4276 [7]
hello 5
12516 [5]
hello 8
6960 [8]
hello 9
11620 [9]
datalist []
61_共享数据(各自进程独立)——进程multiprocessing.Queue+list
import  multiprocessing
import time
import os
#进程安全,可以收集,每个进程拷贝一份,不安全(list,set,tuple,dict)
datalist=[]#每个进程都有单独全局变量,每个进程拷贝一份,互相独立
queue=multiprocessing.Queue()

def adddata(queue,i):
    datalist.append(i)
    queue.put(datalist)#每个进程压入数据
    # queue.put(["023"])#每个进程压入数据
    print("hello",i)
    print(os.getpid(),datalist)#打印每个进程list


if __name__=="__main__":
    lastlist = []  #汇总结果
    for i  in range(10):
        p=multiprocessing.Process(target=adddata,args=(queue,i,))#创建进程
        # p.join()
        p.start()#开启      #没有join,进程并发执行,乱序
        #p.join()        #进程是同步执行,乱序
        listlite=queue.get()#get一次,取出一次数据
        print("get",listlite,os.getpid())
        lastlist+=listlite #结果汇总

    print(lastlist)#打印结果
hello 0
13228 [0]
get [0] 8940
hello 1
11544 [1]
get [1] 8940
hello 2
12620 [2]
get [2] 8940
hello 3
2400 [3]
get [3] 8940
hello 4
get [4] 8940
10320 [4]
hello 5
11448 [5]
get [5] 8940
hello 6
12872 [6]
get [6] 8940
hello 7
8232 [7]
get [7] 8940
hello 8
8364 [8]
get [8] 8940
hello 9
2712 [9]
get [9] 8940
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
62_共享数据(各自进程独立)——进程multiprocessing.Array
import multiprocessing

temp=multiprocessing.Array("i",[1,2,3,4])#进程不安全数组不作为参数,安全,当作参数

def add(i):
    temp[i]=100+i
    print(id(temp))
    for item in temp:
        print(i,"---->",item)

if  __name__=="__main__":
    for i in range(2):
        p=multiprocessing.Process(target=add,args=(i,))
        p.start()       #进程并发,乱序强资源,0和1进程,都有可能先打印
#运行结果
46016720
0 ----> 100
0 ----> 2
0 ----> 3
0 ----> 4
46147792
1 ----> 1
1 ----> 101
1 ----> 3
1 ----> 4
63_共享数据(各自进程独立)——进程multiprocessing.Value/Array
import  multiprocessing

#Array Value共享数据,必须当作参数,
def  f(n,a):
    n.value=9999
    a[0]=8888


if __name__=="__main__":
    arr=multiprocessing.Array("i",[1,2,3,4,5]) #数据共享,当作参数
    num=multiprocessing.Value("d",0.0) #d是一个类型,%d,%s,

    p=multiprocessing.Process(target=f,args=(num,arr))
    p.start()
    p.join()

    print(arr[:])
    print(num.value)
[8888, 2, 3, 4, 5]
9999.0
C++并发编程 线程间的数据共享 1. 为什么要并发?分离关注点、提升性能 2. 何时不用并发?收益比不上成本。 启动线程存在固有开销 线程需要独立的堆栈空间 运行线程时,操作系统每次上下文切换都需要耗费时间 3. C++11支持的并发:全新的线程感知内存模型,以及管理线程、保护共享数据、线程同步和原子操作等 4. 线程:启动线程 、等待线程结束join() 或自主运行detached() (当线程退出时, 相关资源的能够正确回收) 5. 线程间共享数据 条件竞争(race condition):不变量遭到破坏(比如双向... 阅读详情

相关推荐

共享内存,多进程之间实现共享

如何去实现多进程之间的通讯,这里写的主要是通过共享内存来实现是通讯方式。可能不怎么好,请辩解,谢谢!

进程间共享内存的8种方式

进程间的八种通信方式----共享内存是最快的 IPC 方式 1.无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 2.高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。 3.有名管道 (named pipe) : ...

qingtian211的博客 1万+

【AI方案集】个人记忆库型AI智能体终身伴侣方案.docx

这套AI技术方案不走“先堆概念再硬套场景”的老路,而是以业务痛点为锚点,把机器视觉识别、预测性分析、大模型知识赋能等能力拆解成轻量化可落地的功能模块,直接嵌入生产运营的关键环节,既能快速落地见效,又能通过持续的数据迭代逐步放大价值,帮企业在不盲目新增硬件投入的前提下,稳步完成智能化升级,实实在在把AI变成能降本、提效、控风险的生产工具。

进程间的数据共享

//========================================================================//TITLE://    进程间的数据共享//AUTHOR://    norains//DATE://    Friday  20-June-2008//Environment://    WINCE5.0 + VS2005 + MIPS SDK/

norains的专栏 1万+

【能源系统优化】基于MATLAB的光储充一体化多目标调度:光伏自用率与充电成本权衡及储能联合调控 MATLAB 光储充一体化运行优化|光伏自用率与充电成本权衡

内容概要:本文围绕MATLAB实现的光储充一体化系统运行优化展开,旨在通过建立统一的能量调度模型,量化光伏自用率与充电成本之间的权衡关系,提升设备利用效率与运行安全性,并形成可复现的工程分析能力。项目采用多目标混合整数线性规划方法,综合考虑分时电价、储能损耗、光伏消纳与车辆充电需求,在满足功率平衡、储能状态递推、充放电互斥等约束条件下,实现经济性与环保性的协同优化。通过归一化加权目标函数,支持灵活调整运营策略偏好,并利用MATLAB R2025b完成从数据生成、建模求解到结果可视化的完整流程。配套GUI界面支持参数配置、模型训练、结果预测与运行监控,增强了系统的实用性与交互性。 适合人群:具备一定MATLAB编程基础,从事新能源系统规划、电动汽车充电站运营、微电网控制或综合能源管理的技术人员与研究人员,尤其适合工作年限1-3年、希望深入掌握能源系统优化建模与工程实现的研发人员。 使用场景及目标:①优化城市公共充电站、工业园区、高速服务区等场景的光储充协同运行,降低运营成本并提高光伏利用率;②支持日前调度与滚动优化,实现从静态分析到动态调控的升级;③为储能配置、容量规划、需求响应申报及投资回报评估提供量化决策工具;④通过GUI界面实现数据驱动的模型训练与预测,辅助制定最优充放电策略。 阅读建议:此资源以MATLAB为开发平台,强调从理论建模到工程落地的全过程实践。建议读者结合代码示例与GUI操作,理解数据预处理、多目标优化、混合整数求解与结果评价的关键步骤,并通过修改权重参数、运行场景与设备配置进行灵敏度分析,从而全面掌握光储充系统优化的核心逻辑与应用潜力。

IGBT模块封装中的银烧结技术:为什么特斯拉和比亚迪都在用这种黑科技?

本文深入解析了IGBT模块封装中的银烧结技术,揭示了其作为功率半导体封装工艺关键升级的原因。该技术通过低温烧结形成高熔点、高导热导电的银连接层,显著提升了模块的功率循环寿命、散热能力和高温工作稳定性,这正是特斯拉、比亚迪等行业巨头采用此项黑科技以释放电动汽车电驱系统极致性能的核心所在。

yhn4567890的博客 834

如何在进程间共享数据?

1、引言  在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换,就如同在WIN16中对本地进程进行读写操作一样。  典型的WIN16两进程可以通过共享内存来进行数据交换:(1)进程A将GlobalAlloc(GMEM_SHARE...)API分配一定长度的内存;(2)...

weixin_34122810的博客 584

TSMaster二次开发实战:如何用Python搞定CAN/CANFD事件回调(附完整代码)

本文详细介绍了如何利用Python进行TSMaster二次开发,实现CAN/CANFD事件回调功能。通过实战代码演示,讲解了预发送与后处理回调的核心区别、注册流程、资源管理及性能优化技巧,帮助工程师高效构建自动化测试与数据监控应用。

star的博客 669

进程(五):进程之间的数据共享

展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。 这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布式系统中。 但进程间应该尽量避免通信,即便需要通信,也应该选择进程安全的工具来避免加锁带来的问题。 以后我们会尝试使用数据库来解决现在进程之间的数据共享问题。 Manager模块介绍 进程间数据是...

。 7341

解决用加速器以后,电脑无法连接网络的问题

相信很多朋友也遇到过,用加速器以后,电脑网络直接断了,或者访问外网时打不开的情况解决办法是。

qq_46368050的博客 1万+

基于 SpringAI 整合 DeepSeek 模型实现 AI 聊天对话

很多云平台都提供了一键部署大模型的功能,这里不再赘述(阿里云百炼平台、火山方舟-火山引擎等)Ollama。

📜一个热爱探索的人 1279

两个进程共享数据的方法

此方法来自《windows核心编程》第五版447页

xiaoyuanyuan2009的专栏 1722

火山引擎大模型语音合成双向流式API实战:Python实现与优化指南

本文详细介绍了如何利用火山引擎大模型语音合成双向流式API,通过Python实现低延迟、实时的语音合成应用。文章从核心协议解析入手,提供了完整的Python客户端实现代码,并分享了连接复用、错误重试、与LLM流式输出集成等实战优化技巧,帮助开发者快速构建智能客服、实时语音助手等AI应用。

n8m7b6v5c4的博客 1219

保持进程同步的方法有哪些?

1、同步和通讯的目的是一样的,实现进程间数据共享,同步只是为了做到处理协同。 2、Windows 环境下常用的同步方式有: 计时器、信号量、事件、互斥锁  3、在其他环境下进程同步的四种方法 1、临界区(Critical Section):通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 优点:保证在某一时刻只有一个线程能访问数据的简便办法 缺点:虽然临界区同步速...

的博客 5499

基于睿抗智能小车省赛第一题兵人识别的学习5.25

先用pip uninstall numpy卸载,再在后面输入pip install numpy==1.23安装版本为1.23的numpy。首先安装Anaconda环境;pycharm方便使用,安装yolov5以及一大堆数据包;由于python中的numpy插件包版本过高,训练失败,所以要安装一个版本低的包。每次运行都要先运行虚拟环境,输入:conda activate。图中所有精度大概在0.768-0.99之间。这里指定安装numpy1.23.。训练完成会得到一个衡量精度的指标。等待99张图片训练完成。

Haili_的博客 1299

Spring Boot 3.2 集成 Shiro 2.0.1 踩坑实录:从 javax.servlet 到 jakarta.servlet 的完整迁移指南

本文详细介绍了Spring Boot 3.2集成Shiro 2.0.1时遇到的从javax.servlet到jakarta.servlet的迁移问题,提供了完整的解决方案和迁移指南。通过Maven依赖配置和代码调整,帮助开发者顺利跨越Jakarta EE的兼容性鸿沟,确保Shiro权限控制在Spring Boot 3.2环境中正常运行。

weixin_42570296的博客 484

DLL入门浅析(5)——使用DLL在进程间共享数据

DLL入门浅析(5)——使用DLL在进程间共享数据          在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的,因为所有的进程用的都收同一块地址空间;而在Win32环境中,情况却发生了变化,每个进程都有了它自己的地址空间,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的进程所有。当进程在载入DLL时,操作系统自动把DLL地址映射到该进程的私有空间,也就

浪的专栏 1971

国科大学习资料--人工智能原理与算法-2021年期末考试题解析(学长整理)

国科大学习资料–人工智能原理与算法-2021年期末考试题解析(学长整理) 国科大学习资料–人工智能原理与算法-2021年期末考试题解析(学长整理) 国科大学习资料–人工智能原理与算法-2021年期末考试题解析(学长整理) 根据学弟的反馈,该年的期末题只有5道,且均是作业题(所以大家一定要积极完成作业,考前多做几遍!!!!) 下面解析: 3.25 由于该题,我没有做过,所以只能给你英文版的答案。答案如下,其他的题目答案都是中文版。 5.9 8.10 12.20 15.13 ...

无名何许人的博客 3981

C++多进程数据共享

C++多进程数据共享 1.创建子进程 int process_1(wchar_t commandLine2[]) { STARTUPINFO si = { sizeof(STARTUPINFO) };//在产生子进程时,子进程的窗口相关信息 PROCESS_INFORMATION pi; //子进程的ID/线程相关信息 DWORD returnCode;//用于保存子程进的返回值; //wchar_t commandLine2[] = L"../x64\\Debug

Boxingstar的博客 2246

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C++中数据共享的实现机制

摘 要:在程序设计中如何实现不同的函数模块之间的数据共享,是程序设计中的关键技术问题。 本文以C++为例,详细阐述了面向对象程序设计中各种方式数据共享的实现机制。 关键词:数据;函数模块;数据共享;C++ C++是目前应用广泛的一种面向对象程序 设计语言,它比较适合于编写大型复杂程序。它 所提供的数据共享机制具有广泛的代表性,能够 很好的解决程序设计中数据的共享。 1 使用局部变

5730

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Python 进程之间共享数据

  最近遇到多进程共享数据的问题,到网上查了有几篇博客写的蛮好的,记录下来方便以后查看。 一、Python multiprocessing 跨进程对象共享   在mp库当中,跨进程对象共享有三种方式,第一种仅适用于原生机器类型,即python.ctypes当中的类型,这种在mp库的文档当中称为shared memory方式,即通过共享内存共享对象;另外一种称之为server pr...

dati4434的博客 1266

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 20170529——线程
下一篇: 统计学练习题——组合,排列组合
骑车的泰山
博客等级 码龄10年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值