gpt4 book ai didi

Powershell 7 - 并行 While 循环

转载 作者:行者123 更新时间:2023-12-03 01:26:46 25 4
gpt4 key购买 nike

我正在运行 PowerShell 7,由于不再支持工作流,我遇到了并行 while 循环的问题。保持下面的示例简单,我只需要在同一个脚本中并行运行两个 while,但需要确保 sleep 命令在 while 循环中也能正常工作。

我想不出使用 foreach-object 执行此操作并使用 while 循环执行后台作业的好方法 - sleep 命令永远不会激活驱动 CPU。应该很简单,但在那里找不到太多。同样,下面只是我需要运行的一个简单示例。

while ($true) 
{
write-host "Doing first task"
Start-Sleep 2
}


while ($true)
{
write-host "Doing second task"
Start-Sleep 2
}

最佳答案

我无法将脚本 block 数组传递给 foreach-object,所以这里有一个类似的 start-threadjob 版本。

我认为你的意思是在 start-sleep 之前有一个分号来开始一个新的语句。

start-threadjob { while ($true) { 
write-host Doing first task; Start-Sleep 2 } }
start-threadjob { while ($true) {
write-host Doing second task; Start-Sleep 2 } }
get-job | receive-job -wait -autoremovejob


Doing first task
Doing second task
Doing first task
Doing second task
Doing first task
Doing second task
# ...

啊,有办法了。并且输出顺序随机变化。

这两个任务也可以是脚本,但不是函数。
1,2 | foreach-object -parallel {
switch ($_) {
1 { while ($true) { write-host Doing first task; Start-Sleep 2 } }
2 { while ($true) { write-host Doing second task; Start-Sleep 2 } }
}
}


Doing first task
Doing second task
Doing second task
Doing first task
Doing second task
Doing first task
# ...

关于Powershell 7 - 并行 While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62117506/

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