Fork into parallel but non-identical threads
5 次查看(过去 30 天)
显示 更早的评论
I am interested in using imwrite in a loop to write 1 frame from 2 cameras to the disk simultaneously (each has associated timestamp). Right now they are written in the loop serially:
%camera 1%
t=datetime('now','Timezone','local','Format','d-MMM-y HH:mm:ss Z');
imwrite(buf2,thisFilenamec1);
disp(['Camera 1 Frame ',num2str(i+1),'/',num2str(frameCount),' at ',datestr(t)]);
%camera 2%
t2=datetime('now','Timezone','local','Format','d-MMM-y HH:mm:ss Z');
imwrite(getdata(vid),thisFilenamec2);
disp(['Camera 2 Frame ',num2str(i+1),'/',num2str(frameCount),' at ',datestr(t)]);
0 个评论
回答(1 个)
Akshat
2024-5-10
Hi Emily,
Whenever we need to execute commands in a parallel fashion, we use the "parfor" loop instead of a normal "for" loop in MATLAB.
The documentation can be found here : https://www.mathworks.com/help/parallel-computing/parfor.html
You would just require to start a parallel pool, and replace "for" with "parfor".
Now, according to my knowledge of how operating systems work in general, are that when a file is being edited, the OS puts a lock on that file, in order to not create inconsistencies in versions of files. You can think of it like this, let us say you are writing to a file, and parallely I open the file to write, whatever I write and whatever you write are going to create two versions of the same file.
Hence, this can be issue in this case as well, the OS will put a lock on a file when "imwrite" is called, so a parallel thread cannot open the file and an error will be thrown. The same is written by Walter Robson in a comment on the following answer:
A simple workaround is that you do the computations parallely, and store it in an array, then write the whole array to the file. This will reduce the computation overhead but the write will be sequential.
Hope this helps!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!