發布支持多線程的PowerShell模塊 —— MultiThreadTaskRunner
阿新 • • 發佈:2017-06-03
https 地址 應用 mda sta 麻煩 好的 ges pow
應用場景
多線程在需要批量處理一些任務的時候相當有用,也更加有利於充分利用現有計算機的能力。所有主流的開發語言都支持多線程。
默認情況下,PowerShell作為一個腳本語言,是不支持多線程操作的,雖然有所謂的後臺任務,但實際上控制起來相當麻煩。
解決方案
我很喜歡PowerShell,所以為此專門寫了一個自定義的模塊,來實現多線程的功能。該模塊使用C#編寫,源代碼可以在下面的地址訪問到
https://github.com/chenxizhang/MultiThreadTaskRunner
與此同時,這個模塊已經打包發布到微軟官方的PowerShell Gallery中
https://www.powershellgallery.com/packages/MultiThreadTaskRunner/1.0
如何使用
要使用該模塊,首先需要進行安裝(請用管理員身份打開PowerSehll)
Install-Module -Name MultiThreadTaskRunner
接下來,準備一個用來測試的腳本塊
$script ={
param($obj);
Write-Host $obj
}
請註意,這裏只是用最簡單的代碼做了實現,根據傳入的一個參數,輸出數據
第三步,就可以進行快速使用了
New-MultiTaskJob –Source 1..100 –Block $script –ThreadCount 10
這個命令的意思是指,用10個並行的線程,處理傳入的100個數字,實際上每個線程分配得到的數字是10個,然後使用此前定義好的腳本塊執行它
請註意,你可以看到此時輸出的結果並不是按照1到100的順序進行,這個可以證明實際上這些數字是被不同的線程進行處理的。
發布支持多線程的PowerShell模塊 —— MultiThreadTaskRunner