发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner
應(yīng)用場(chǎng)景
多線程在需要批量處理一些任務(wù)的時(shí)候相當(dāng)有用,也更加有利于充分利用現(xiàn)有計(jì)算機(jī)的能力。所有主流的開發(fā)語言都支持多線程。
默認(rèn)情況下,PowerShell作為一個(gè)腳本語言,是不支持多線程操作的,雖然有所謂的后臺(tái)任務(wù),但實(shí)際上控制起來相當(dāng)麻煩。
?
解決方案
我很喜歡PowerShell,所以為此專門寫了一個(gè)自定義的模塊,來實(shí)現(xiàn)多線程的功能。該模塊使用C#編寫,源代碼可以在下面的地址訪問到
https://github.com/chenxizhang/MultiThreadTaskRunner
?
與此同時(shí),這個(gè)模塊已經(jīng)打包發(fā)布到微軟官方的PowerShell Gallery中
https://www.powershellgallery.com/packages/MultiThreadTaskRunner/1.0
?
如何使用
要使用該模塊,首先需要進(jìn)行安裝(請(qǐng)用管理員身份打開PowerSehll)
Install-Module -Name MultiThreadTaskRunner
?
接下來,準(zhǔn)備一個(gè)用來測(cè)試的腳本塊
$script ={
param($obj);
Write-Host $obj
}
請(qǐng)注意,這里只是用最簡(jiǎn)單的代碼做了實(shí)現(xiàn),根據(jù)傳入的一個(gè)參數(shù),輸出數(shù)據(jù)
?
第三步,就可以進(jìn)行快速使用了
New-MultiTaskJob –Source 1..100 –Block $script –ThreadCount 10
這個(gè)命令的意思是指,用10個(gè)并行的線程,處理傳入的100個(gè)數(shù)字,實(shí)際上每個(gè)線程分配得到的數(shù)字是10個(gè),然后使用此前定義好的腳本塊執(zhí)行它
請(qǐng)注意,你可以看到此時(shí)輸出的結(jié)果并不是按照1到100的順序進(jìn)行,這個(gè)可以證明實(shí)際上這些數(shù)字是被不同的線程進(jìn)行處理的。
原文地址:http://www.cnblogs.com/chenxizhang/p/6936666.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [深圳/广州]微软SQL技术沙龙分享会(
- 下一篇: [翻译]编写高性能 .NET 代码 第一