最近我正在開發一個程序。程序提取從視頻的所有幀,然後處理他們... ...堅果,在加工環節,它的方式太慢,所以我想運行並行的處理功能...多線程字符串函數
但是,正如我在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個外部應用程序的實例。在您發佈的代碼中對多線程任何內容進行多線程並沒有什麼好處,如果您覺得不然,您會感到非常失望。 –