并行执行
1 $throttleLimit = 4 2 $SessionState = [system.management.automation.runspaces.initialsessionstate]::CreateDefault() 3 $Pool = [runspacefactory]::CreateRunspacePool(1, $throttleLimit, $SessionState, $Host) 4 $Pool.Open() 5 6 $id = 3 7 $ScriptBlock = { 8 #此处参数顺序要注意前后,AddArgument的第一个参数会被传递给$id,AddArgument的第二个参数会被传递给$x,与AddArgument的顺序无关,只与param的顺序有关 9 param($id,$x) 10 #在此处定义需要执行的代码 11 Start-Sleep -Seconds 1 12 "Done processing ID $id" 13 "hello, $x" 14 } 15 16 $threads = @() 17 #此处定义需要并行执行的进程总数($x) 18 $handles = for ($x = 1; $x -le 20; $x++) { 19 $powershell = [powershell]::Create().AddScript($ScriptBlock).AddArgument($id).addargument($x) 20 $powershell.RunspacePool = $Pool 21 $powershell.BeginInvoke() 22 $threads += $powershell 23 } 24 25 do { 26 $i = 0 27 $done = $true 28 foreach ($handle in $handles) { 29 if ($handle -ne $null) { 30 if ($handle.IsCompleted) { 31 $threads[$i].EndInvoke($handle) 32 $threads[$i].Dispose() 33 $handles[$i] = $null 34 } else { 35 $done = $false 36 } 37 } 38 $i++ 39 } 40 if (-not $done) { Start-Sleep -Milliseconds 500 } 41 } until ($done)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2013-05-28 wim封装到iso
2013-05-28 正则表达式2
2013-05-28 正则表达式