gpt4 book ai didi

multithreading - 外壳程序的并行执行…带有错误代码

转载 作者:行者123 更新时间:2023-12-03 08:57:20 24 4
gpt4 key购买 nike

tl; dr:我想并行执行多个命令(毕竟在2013年),YET(这很棘手)检索进程的退出错误代码。

来自以下脚本:https://stackoverflow.com/a/11715437/3069988

我设法将此解决方案实现到自己的批处理文件中,我自己的版本看起来像这样:

- - - 8< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
set /a "cmin=0"
set /a "cmax=%NUMBER_OF_PROCESSORS%-(1-%cmin%)"
set "lock=.\lock"
del "%lock%*" /f /q 1>nul 2>nul
set "lock=%lock%.%fdate%_%ftime%.cpu"

for %%i in (%vlst%) do (
==========

rem Start the process on the first unlocked CPU
set /a "pcnt=0"
for /l %%b in (%cmin%,1,!mcpu!) do (
if !pcnt! equ 0 (
if not exist "%lock%.%%b" (
set /a "pcnt+=1"
call:tohex %%b
rem The 'affinity' parameter BITFIELD select the CPU
start "CPU%%b" /b /affinity !hex! /low cmd /c 9>"%lock%.%%b" !vcmd!
)
)
) 2>nul
:wait
rem Wait for a CPU to get unlocked
set /a "pcnt=0-1"
for /l %%b in (%cmin%,1,!mcpu!) do (
if exist "%lock%.%%b" (
del "%lock%.%%b" /q 1>nul 2>nul
if exist "%lock%.%%b" (
set /a "pcnt+=1"
)
)
) 2>nul
rem If all CPU are locked, wait again
if !pcnt! geq !mcpu! (
ping 1.1.1.1 /n 1 1>nul 2>nul
goto wait
)
==========
)

:final
rem Wait for all remaining CPU to be unlocked
for /l %%b in (%cmin%,1,!mcpu!) do (
if exist "%lock%.%%b" (
ping 1.1.1.1 /n 1 1>nul 2>nul
del "%lock%.%%b" /q 1>nul 2>nul
goto final
)
) 2>nul
rem del "%lock%*" /f /q 1>nul 2>nul


goto :eof
- - - 8< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

但是我有锁问题。

好吧,既然我的脚本(或多或少)可与OP的解决方案一起使用,我有4个进程同时运行,并且当一个退出且错误代码大于0时,我想捕获该错误并退出反射(reflect)此错误的我自己的脚本(不一定是相同的错误代码,一个简单的退出/b 1就足够了)

感谢您的反馈...

PS:创建了另一个线程,因为无法要求OP作为回复请求50+信誉:)所以让话题泛滥开始:)

最佳答案

使用您做过的CPU锁定技巧-一个保存返回代码的文件。

通过另一个批处理文件启动您的任务,该批处理文件将捕获返回代码。

在“启动器”批处理文件中执行以下操作:

@echo off
REM %1 is task number
REM launch app %2 is app name, %3 is first param, etc.
REM need to do this dynamically for number of arguments...
%2 %3

echo %ERRORLEVEL% > task%1.rc

我不是批处理文件专家,也许有人可以提供更好的脚本。

关于multithreading - 外壳程序的并行执行…带有错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20399069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com