Powershell 我应该把ScriptBlock放在foreach循环中吗?
我正在设置一些并行化,并想知道将ScriptBlock放在foreach循环中是否有好处或坏处。就像这样Powershell 我应该把ScriptBlock放在foreach循环中吗?,powershell,Powershell,我正在设置一些并行化,并想知道将ScriptBlock放在foreach循环中是否有好处或坏处。就像这样 for ($currentJob = 0; $currentJob -le 20; $currentJob++) { $jobBlock = { param ([int] $runCount) Write-Host "running... $runCount" for($i = 0; $i -lt 100000; $i++ ) {
for ($currentJob = 0; $currentJob -le 20; $currentJob++) {
$jobBlock = {
param ([int] $runCount)
Write-Host "running... $runCount"
for($i = 0; $i -lt 100000; $i++ ) {
}
}
Write-Host "Starting job for $currentJob"
Start-Job -ScriptBlock $jobBlock -ArgumentList $running.Count
}
。。。还是在外面更好
$jobBlock = {
param ([int] $runCount)
Write-Host "running... $runCount"
for($i = 0; $i -lt 100000; $i++ ) {
}
}
for ($currentJob = 0; $currentJob -le 20; $currentJob++) {
Write-Host "Starting job for $currentJob"
Start-Job -ScriptBlock $jobBlock -ArgumentList $running.Count
}
我来自C世界,内部作业看起来像是丢失或覆盖了某些内容,或者不适当地留给了垃圾收集器
只是想知道PowerShell的细微差别。由于您没有在$jobBlock中使用for语句中的任何变量,因此无需在每次循环中重新定义它;在外部定义它。如果速度很重要,则使用运行空间而不是作业