[英]Invoke-Parallel is waiting when using Start-Process
有谁知道为什么Invoke-Parallel不是多线程? 当我运行这个循环时,它不会启动下一个脚本块,直到前一个脚本块完成。
注意我也在PoshRSJob上试过这个。
我正在为找到的每个文件运行 Java jar 文件。 如果你看这里,他们正在使用 Start-Process 命令并等待 rar.exe。
. .\Invoke-Parallel.ps1
$ScriptBlock = {
start-Process -file java -ArgumentList @('-jar',"a:\conversion.jar",$_.FullName,"$($_.FullName).tmp") -Wait
}
ForEach ($file in (GCI -Path b:\*)) {
Invoke-Parallel -InputObject $file -ScriptBlock $ScriptBlock -Throttle 5
}
*请注意,这只是一个简单的示例,我的原始脚本更复杂,但我将其缩小到此条目,这导致多线程不是多线程。
这些多线程工具( Invoke-Parallel和PoshRSJob )需要流水线
我没有流水线化我的原始代码,因为我认为使用循环更干净。 但是使用 pipe 确实有效。
. .\Invoke-Parallel.ps1
$ScriptBlock = {
start-Process -file java -ArgumentList @('-jar',"a:\conversion.jar",$_.FullName,"$($_.FullName).tmp") -Wait
}
(GCI -Path b:\*) | Invoke-Parallel -InputObject $_ -ScriptBlock $ScriptBlock -Throttle 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.