本帖最后由 flashercs 于 2025-1-13 16:17 编辑
powershell 有个简单的多线程方法是 workflow,但是workflow不支持完整的powershell features,且不支持pwsh 6+,例如:powershell 5.1
不支持Write-Host- workflow work1 {
- $Filenames = @("file1.txt", "file2.txt", "file3.txt", "file4.txt", "file5.txt", "file6.txt", "file7.txt", "file8.txt", "file9.txt", "file10.txt", "file11.txt")
- # workflow有很多限制
- # foreach -parallel允许同时最多开启5个线程
- foreach -parallel ($Filename in $Filenames) {
- $i=0
- "Processing $filename"
- $i=1
- #[Threading.Thread]::Sleep(100)
- Start-Sleep -Seconds 1 # Doing some work....
- $i=2
- "Processed $filename"
- $i=3
- }
-
- }
- [System.Diagnostics.Stopwatch]$watch = [System.Diagnostics.Stopwatch]::StartNew()
- work1
- $watch.Stop()
- $watch.Elapsed # 耗时2.21秒
复制代码
|