最近我正在开发一个程序。程序提取从视频的所有帧,然后处理他们... ...坚果,在加工环节,它的方式太慢,所以我想运行并行的处理功能...多线程字符串函数
但是,正如我在Delphi中是新的,并没有多线程的经验,我希望有人知道如何去做。
这里是我目前使用的功能:
sl.loadfromfile(log);
for i := 0 to (SL.Count div 2) - 1 do
begin
WriteLn('Processing extracted frames ' + IntToStr(i + 1) +
' of ' + IntToStr(SL2.Count div 2));
if FileExists(TempDir + IntToHex(i, 8) + '.jpg') then
ExecAndWait(SrcDir + 'packjpg.exe', AnsiRightStr(Str[2], 2) + ' ' +
'"' + TempDir + IntToHex(i, 8) + '.jpg' + '" "' + TempDir +
IntToHex(i, 8) + '.pjg' + '" , TempDir, true, true);
end;
你的代码已经发布在线程中做任何事情都毫不费力,并且由于所有工作都由外部应用程序完成,所以线程将不太可能提供帮助。只需停止等待外部应用程序,并让它的几个实例运行。 –
将这些实例传递给不同的内核可以提高速度的方式太好了......就像处理80K文件需要10分钟......但是如果它运行在8个内核上......我估计它可以在1-2分 – Zenith
它不会帮助任何事情,因为延迟是在等待外部应用程序。一次产生8个外部应用程序的实例。在您发布的代码中对多线程任何内容进行多线程并没有什么好处,如果您觉得不然,您会感到非常失望。 –