1. 程式人生 > >發布支持多線程的PowerShell模塊 —— MultiThreadTaskRunner

發布支持多線程的PowerShell模塊 —— MultiThreadTaskRunner

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