Powershell 工作流处理
Powershell Workflow Processing
为什么这会以(几乎)降序呈现列表?
Workflow FE-Parallel {
foreach -parallel ($i in 0..100) { $i }
}
偶尔会有乱序的数字 (0..100) 生成一个从 0 开始到 100 结束的列表。
您无法保证并行处理项目时的处理顺序。
如果您要问为什么每次的顺序都不一样,或者为什么不是按顺序从 0 升到 100,这就是原因。你可以用这样的代码更好地看到这一点:
foreach -parallel ($i in 0..100) {
Start-Sleep -Milliseconds (Get-Random -Minimum 100 -Maximum 800)
$i
}
如果您问它为什么下降(而不是看起来更多 "random"),那么我认为这是一个实现细节。在内部,设置每个线程(或运行空间,或使用的任何机制)的代码需要迭代每个项目。它可能以一种可预测的方式进行,并且当您的操作如此简单时,它们很可能以大致相同的顺序完成。
为什么要反过来呢?不确定,但重要的是你不能依赖任何特定的顺序。
为什么这会以(几乎)降序呈现列表?
Workflow FE-Parallel {
foreach -parallel ($i in 0..100) { $i }
}
偶尔会有乱序的数字 (0..100) 生成一个从 0 开始到 100 结束的列表。
您无法保证并行处理项目时的处理顺序。
如果您要问为什么每次的顺序都不一样,或者为什么不是按顺序从 0 升到 100,这就是原因。你可以用这样的代码更好地看到这一点:
foreach -parallel ($i in 0..100) {
Start-Sleep -Milliseconds (Get-Random -Minimum 100 -Maximum 800)
$i
}
如果您问它为什么下降(而不是看起来更多 "random"),那么我认为这是一个实现细节。在内部,设置每个线程(或运行空间,或使用的任何机制)的代码需要迭代每个项目。它可能以一种可预测的方式进行,并且当您的操作如此简单时,它们很可能以大致相同的顺序完成。
为什么要反过来呢?不确定,但重要的是你不能依赖任何特定的顺序。