matlab的多线程操作
matlab的多线程操作
- 先导知识
- 一、结论
- 二、定时器timer
- 三、多进程操作
先导知识
- 听说过:定时器中断、线程、进程
- 知道:matlab的帮助文档使用方式,如:doc memmapfile、help memmapfile
- 理解:回调函数,同步回调、异步回调(不知道也没关系,csdn里面很多人都写了这个)
一、结论
截止到2021a版本,matlab不能实现传统意义的多线程,但是可以实现并行计算(doc parallel)、定时器中断,以及利用磁盘映射实现多进程通信(doc memmapfile)
本文标题是有些“文不对题”的,实际上只是便于读者检索到该文章。
二、定时器timer
对于轻量级的任务,比如在命令行打印一个字符串,绘制一张点数不多的图,可以”模拟“多线程(本质上还是定时器中断)
该板块讲一下timer的基本使用,有底子的建议在matlab中或者浏览器中查阅timer的帮助文档:
1、基本用法
t = timer('BusyMode','queue','ExecutionMode', 'fixedspacing',...'Period',1/fps, 'TimerFcn', @call_back)
一般设置这几个就可以了,如果需要设置其他的,请自行查阅帮助文档。
(1)‘BusyMode’: 一般选‘queue’,排队执行,这样的话,不至于丢任务。
Character vector or string scalar that indicates action taken when a timer has to execute TimerFcn
before the completion of previous execution of the TimerFcn
. When Running='on'
, BusyMode
is read only. This table summarizes the busy modes.
BusyMode Values
|
Behavior if Queue Empty | Behavior if Queue Not Empty | Notes |
---|---|---|---|
'drop'
|
Adds task to queue | Drops task |
Possible skipping of TimerFcn calls
|
'error'
|
Adds task to queue |
Completes task; throws error specified by ErrorFcn ; stops timer
|
Stops timer after completing task in execution queue |
'queue'
|
Adds task to queue | Waits for queue to clear, and then enters task in queue |
Adjusts Period property to manage tasks in execution queue
|
(2)‘Period’:两次回调之间间隔时间;
(3)‘ExecutionMode’:设置下一次回调从什么时候开始,这四个都可能用到,根据需求来。
singleShot:只执行一次;
fixedRate:从上一次回调进入排队开始,经过一个周期,再进入下一次回调;
fixedDelay:经过一个time lag之后,经过一个周期,再进入下一次回调;
fixedSpacing:上一次回调结束之后,经过一个周期,再进入下一次回调;
(4)‘TimerFcn’, @call_back
设置回调函数,这个有点复杂。timer本质上就是一个定时器中断,它通过将任务(call_back)排队执行,它的”回调方式“是根据’ExecutionMode’的设置来确定的,不是传统意义上的同步回调或者异步回调。
三、多进程操作
所谓多进程操作,就是开多个matlab,通过访问硬盘当中的同一个内存空间,实现多个进程之间的通信,从而做到做进程操作。
用到的关键函数是:memmapfile
这里贴一个我自己做测试时用的demo,看不懂的可以在评论区问,看见了就会回复。
注意:两个进程不能同时访问一块内存空间,否则会报错。
(由于matlab语言在markdown格式下,没有高亮,所以下面的两个代码块是选择的是c语言)
第一个.m文件
% 写入一些数据
myData = (1:10)';
fileID = fopen('records.dat','w');
fwrite(fileID,myData,'double');
fclose(fileID);
% 改变一些数据
while 1
m = memmapfile('records.dat','Format','double','Writable',true) ;
m.Data(1) = m.Data(1)+1;
disp(m.Data);
clear m
pause(1)
end
第二个.m文件
%将内存空间'records.dat'的内容打印出来
while 1
m = memmapfile('records.dat','Format','double','Writable','false') ;
disp(m.Data)
clear m
pause(1)
end
matlab的多线程操作相关推荐
- FMDatabaseQueue 数据库多线程操作、事务处理
SQLite数据库多线程操作: 在上面一节中已经讲过FMDB的用法了,接下来讲讲sqlite在都线程中的用法.如果应用中使用了多线程操作数据库,那么就需要使用FMDatabaseQueue来保证线程安 ...
- 一行 Python 实现并行化 -- 日常多线程操作的新思路 - 左手键盘,右手书 - SegmentFault...
一行 Python 实现并行化 -- 日常多线程操作的新思路 - 左手键盘,右手书 - SegmentFault
- Shell多线程操作及线程数控制实例
来源:http://www.jb51.net/article/51720.htm 这篇文章主要介绍了Shell多线程操作及线程数控制实例,文中从单线程实现一个需求开始,不断加入代码实现多线程以及线程数 ...
- python多线程读取数据库数据_python多线程操作MySQL数据库pymysql
python多线程操作MySQL数据库pymysql 项目中使用多线程操作数据库提示错误:pymysql.err.InterfaceError: (0, "),原因是pymysql的exec ...
- MFC不能多线程操作控件的原因
对于大多数mfc对象,请不要在线程间传递它们,不管是栈上的还是堆上的!原因如下: mfc的大多数类不是线程安全的,调用传入对象的成员函数可能不会报错,但是未必能达到程序预定的功能! mfc与界 ...
- matlab文件目录表示,Matlab - 文件目录路径操作_读取不同路径下的相同文件名表格...
Matlab - 文件目录路径操作_读取不同路径下的相同文件名表格 tr1 str1 for max imp mda eva 目录 xls clear;clc; clo ...
- python多线程读取数据库数据_Python基于多线程操作数据库相关知识点详解
Python基于多线程操作数据库相关问题分析 本文实例分析了Python多线程操作数据库相关问题.分享给大家供大家参考,具体如下: python多线程并发操作数据库,会存在链接数据库超时.数据库连接丢 ...
- Core Data 多线程操作实战篇
最近在解决百度音乐iPhone客户端偶现数据库操作crash的问题,顺手整理了下CoreData的多线程原则,以及实际开发时应该如何遵守这些原则. Core Data多线程操作的基本原则 不允许跨线程 ...
- c#多线程操作界面控件的简单实现
一个小功能,早有人实现了.自己在一个项目中用到,觉得有必要记录一下,写下来. 代码 从上面你可能已经看出如何多线程操作同一个控件的,就是通过一个委托,然后定义委托方法,判断控件的InvokeRequi ...
最新文章
- 计算机改名后无法上网,CDEF磁盘分区无法修改名字修复方法
- Python - MySQL数据库操作
- 码云Webhook触发Jenkins自动构建 - Jenkins演练(一)
- docker 安装部署 Jenkins 2.322
- python知识点总结_20211231
- 3.剑指Offer --- 高质量的代码
- ❤️Docker教程小白实操入门 教程合集❤️
- LayaAir 项目开发使用TiledMap注意
- 17.CRT的绿色版安装和使用。
- 萤石云 android,Android-再次解读萤石云视频
- AtCoder Beginner Contest 062(CD)
- (翻译)关系型数据库工作原理(二)
- 编程入门先学python好不好,学python用什么软件编程
- 坑爹!攻城狮老爸被苹果解雇 只因女儿晒iPhone X
- 我一个高考英语94的渣渣是怎么通过四六级的(学习方法技巧)
- eap wifi 证书_如何以编程方式在Android中安装CA证书(用于EAP WiFi配置)?
- win11无法连接wifi怎么办?
- 远程linux云主机,Linux实验室 远程连接Linux云主机方法
- Matlab如何画对比柱状图
- C语言中的自定义函数
热门文章
- Ubuntu16.04 和 Win7 双系统启动顺序更改
- android 能调用gcc_Android:交叉编译总结
- 红队作业 | 信息收集工具汇总
- C语言进阶剖析 13 接续符和转义符
- 马斯克的脑机接口,一块树莓派就能做出来?
- [廖雪峰python教程列表生成器练习]杨辉三角定义如下,把每一行看做一个list,试写一个generator,不断输出下一行的list
- 大话西游2服务器维护公告,大话西游2经典版:2019年05月09日停机维护公告
- 计算机硬件简笔画,电脑的鼠标彩色简笔画图片教程步骤
- 宋宝华: kvmalloc ——倚天剑屠龙刀两大神器合体?
- 如何将wps中的表格转为图片,并设置较高的dpi