powershell - 我应该将 ScriptBlock 放在 foreach 循环中吗?
问题描述
我正在设置一些并行化,并想知道将 ScriptBlock 放置在 foreach 循环中是否有好处(或有害)。像这样...
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 的细微差别。
解决方案
由于您没有使用 中的for
语句中的任何变量$jobBlock
,因此无需每次通过循环都重新定义它;在外面定义它。
推荐阅读
- xamarin.forms - 是否可以在 Android 自定义样式中使用 AppThemeBinding?
- android - 如何在 Android Studio 中使用 Places API 在地图上显示多个位置标记
- java - 如何使用 Android Studio 从 URL 加载图像?
- typescript - 在 React Native 中使用 TypeScript 的箭头函数返回组件
- css - 使用 Wordpress 的 Illdy 主题仅在 Jumbotron 中更改 TEXT 的背景颜色
- django - 如何在 Django 模板中建立索引
- sql - 如何使用 Oracle SQL Developer 选择当月的生日?
- amazon-ec2 - AWS powershell:获取-EC2InstanceType
- python - 我正在尝试使用 python boto3 列出 aws ECS 集群中的所有集群,它最多只能列出 100 个集群,我想要 300 个集群
- json - 如何在 pyspark 数据帧上应用 group by 并对结果对象进行转换