发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner

应用场景

多线程在需要批量处理一些任务的时候相当有用,也更加有利于充分利用现有计算机的能力。所有主流的开发语言都支持多线程。

默认情况下,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的顺序进行,这个可以证明实际上这些数字是被不同的线程进行处理的。

时间: 2025-01-07 03:12:49

发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner的相关文章

ISE Module Browser –直观高效的PowerShell模块管家!

 ISEModule Browser –直观高效的PowerShell模块管家! 可重复利用的优质代码好比乐高零件,使IT人员能够迅速重组出自动化解决方案.上哪儿找可重复利用的优质代码呢?现有的一种方法是利用PowerShellGet.PowerShellGet是一个命令集,可通过控制台在PowerShellGallery内查找.安装并发布模块.不过,今天我们要给大家介绍的是一种更为直观的.通过图形界面访问管理PowerShell模块的方式-Module Browserfor PowerSh

python多线程与threading模块

python多线程与_thread模块 中介绍了线程的基本概念以及_thread模块的简单示例.然而,_thread模块过于简单,使得我们无法用它来准确地控制线程,本文介绍threading模块,它提供了更强大的多线程管理方案. threading模块的对象 Thread 表示一个执行线程的对象 Lock 锁原语 RLock 可重入锁对象,使单一线程可以再次获得已持有的锁(递归锁) Condition 条件变量对象,使得一个线程等待另一个线程满足特定条件 Event 条件变量的通用版本,任意数量

新版Azure Automation Account 浅析(二) --- 更新Powershell模块和创建Runbook

前篇我们讲了怎样创建一个自动化账户以及创建时候"Run As Account"选项背后的奥秘.这一篇针对在Azure自动化账户中使用Powershell Runbook的用户讲一下怎样更新powershell 模块. 更新Powershell模块 首先,我们需要先了解一下Azure Automation的系统架构.我们已经知道用户可以通过运行Runbook来实现自动化运维,Runbook运行则是在Azure Automation的沙盒里执行的,沙盒是一组由Azure管理的虚机资源, 我

Citrix发布支持Framehawk技术的HDX协议,用户体验优势进一步扩大

Framehawk技术是什么?关心Citrix的朋友们可能还记得在这是一家在去年一月份被Citrix收购的公司.Framehawk曾经是一家在虚拟化业内很知名的厂商,它的Lightweight FramebufferProtocol (LFP:轻型帧缓冲协议)是自家研发的专利技术(LFP作用和Teradici公司的PC-over-IP(PCoIP)协议类似,只是后者效率较低,VMware View正是租用Teradici公司PCoIP协议作为其传输协议,所以体验效果不好,另外最近Amazon推出

监控之cacti的安装部署(监控本机及其他主机+支持多线程+命令行监控)

主机环境   redhat6.5 64位 实验环境   服务端1 ip 172.25.25.1            服务端2 ip 172.25.25.2 安装包     cacti-0.8.8h.tar.gz      php-snmp-5.3.3-26.el6.x86_64.rpm cacti-spine-0.8.8g.tar.gz 防火墙状态:关闭 Selinux状态:Disabled 1.配置安装cacti及测试 A)配置安装cacti [[email protected] Asia]

ThreadSafeClientConnManager用来支持多线程的使用http client

ThreadSafeClientConnManager用来支持多线程的使用http client import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.Defau

<转>创建支持eclipse的多模块maven项目

如何使用eclipse创建Maven工程及其子模块 1,首先创建一个父类工程   子模块继承父类工程      并在父类工程的pom.xml文件中定义引入的jar及其版本号     子模块可以引用 2  创建api子模块,主要放置SDK 3  创建server  子模块 主要存放配置文件   不包括源代码 创建工程完成 创建支持eclipse的多模块maven项目 通过maven可以创建多个关联模块的项目(Multiple Module Projects).由一个总的模块,下面包含多个子模块(子

Python的多线程和多进程模块对比测试

本文主要对比测试Python的多线程和多进程模块在CPU类型和I/O的任务操作时的效率 一 测试CPU消耗类型任务 在一台多核CPU的服务器上执行多线程代码,理论上代码执行时会利用多余的CPU核心来提升性能.但是由于Python的GIL的存在,使用多线程来执行CPU繁重的任务,未必能得到性能提升.但是GIL又必不可少,因为在Python解释器中执行线程是不安全的,也就是说为了保证Python线程执行时的安全,Python提供了一个全局锁,同一时刻,只允许一个线程获得这个全解锁并执行. CPU消耗

完美编译暗黑世界1.4的win32版本(支持线程和联网模块)

完美编译暗黑世界1.4的win32版本(支持线程和联网模块) (原文地址/下载地址:http://www.9miao.com/question-15-53447.html) 首先,非常感谢9秒团队无私奉献的精神,把暗黑世界客户端源代码免费公开! 让我们有了学习cocos2Dx的入门工程,造福广大会员,功德无量! 本次修改,我是在1.3基础上的,其实也是在1.0基础上一步一步修改过来的. 初学者可以先看1.0的工程,再看1.3的工程,接着就是看1.4的工程了. 一些文件配置和拷贝,请参考1.0和1