PowerShell多线程执行前后台作业的例子
下面例子使用Powershell线程运行了两个后台任务和一个前台任务,创建几个运行时间长点的任务,并且每个任务命令中添加使用Start-Sleep。
$start = Get-Date
$task1 = { Start-Sleep -Seconds 4; Get-Service }
$task2 = { Start-Sleep -Seconds 5; Get-Service }
$task3 = { Start-Sleep -Seconds 3; Get-Service }
# run 2 in separate threads, 1 in the foreground
$thread1 = [PowerShell]::Create()
$job1 = $thread1.AddScript($task1).BeginInvoke()
$thread2 = [PowerShell]::Create()
$job2 = $thread2.AddScript($task2).BeginInvoke()
$result3 = Invoke-Command -ScriptBlock $task3
do { Start-Sleep -Milliseconds 100 } until ($job1.IsCompleted -and $job2.IsCompleted)
$result1 = $thread1.EndInvoke($job1)
$result2 = $thread2.EndInvoke($job2)
$thread1.Runspace.Close()
$thread1.Dispose()
$thread2.Runspace.Close()
$thread2.Dispose()
$end = Get-Date
Write-Host -ForegroundColor Red ($end - $start).TotalSeconds
相继执行这3个任务从Start-Sleep中看至少需要花费12秒。但是这个脚本仅执行了5秒多一点。其结果保存为$result1, $result2和$result3。与后台作业对比,它在返回大数据用时将差不多。
文章出处:http://www.pstips.net/
相关推荐
-
PowerShell 获取系统信息的函数
复制代码 代码如下: function Get-SystemInfo{ param($ComputerName = $env:COMPUTERNAME) $header = 'Hostname','OSName','OSVersion','OSManufacturer','OSConfiguration','OS Build Type','RegisteredOwner','RegisteredOrganization','Product ID','Original Install Date'
-
Powershell后台作业、异步操作实例
Powershell是单线程程序且一次只能做一件事情.后台作业能额外增加Powershell进程在后台处理作业.当需要程序同时运行且数据量不是很大时它能很好的解决问题.但从Powershell后台回传数据是一个非常麻烦的工作,它将浪费很多时间.将会导致脚本更慢. 这里有3个并发执行任务: 复制代码 代码如下: $start = Get-Date # get all hotfixes$task1 = { Get-Hotfix } # get all scripts in your profile$
-
PowerShell快速创建一个指定大小文件的实例分享
有时做性能测试时,需要准备几个大文件,内容不限制.我以前比较傻,是这样做,拼命地往一个文本文件中写字符串,要写2G,也得花很长时间.今天发现使用FileStream可以秒杀. 复制代码 代码如下: $tempFile="pstips.net"$fs=New-Object System.IO.FileStream($tempFile,[System.IO.FileMode]::OpenOrCreate)$fs.Seek(2GB,[System.IO.SeekOrigin]::Begin)
-
PowerShell多线程执行前后台作业的例子
下面例子使用Powershell线程运行了两个后台任务和一个前台任务,创建几个运行时间长点的任务,并且每个任务命令中添加使用Start-Sleep. 复制代码 代码如下: $start = Get-Date $task1 = { Start-Sleep -Seconds 4; Get-Service }$task2 = { Start-Sleep -Seconds 5; Get-Service }$task3 = { Start-Sleep -Seconds 3; Get-Service } #
-
python使用flask与js进行前后台交互的例子
flask与js进行前后台交互代码如下,后台给前端发数据: python部分: # -*- coding: utf-8 -*- from flask import Flask,jsonify,render_template import json app = Flask(__name__)#实例化app对象 testInfo = {} @app.route('/test_post/nn',methods=['GET','POST'])#路由 def test_post(): testInfo['
-
Java多线程执行处理业务时间太久解决方法代码示例
背景:在政府开发了一个应用系统,主要功能是让企业填写企业资质信息,然后通过给定的公式,统计这一系列的信息,以得分的形式展示给政府领导查看.目前有1300家企业填报.由于得分是实时显示的,所以导致统计功能很慢. 代码运行流程: 1.查出1300企业信息 2.遍历1300企业信息,ji计算每家企业得分信息.每家预计时间为0.3秒.合计390秒.导致页面请求超时 3.导出(用jxl jar) 解决方案: 由于处理业务的,所以需要能有返回值的线程.用:Callable 直接上代码 1.调用线程的代码 L
-
Spring Boot定时+多线程执行过程解析
这篇文章主要介绍了Spring Boot定时+多线程执行过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Spring Boot 定时任务有多种实现方式,我在一个微型项目中通过注解方式执行定时任务. 具体执行的任务,通过多线程方式执行,单线程执行需要1小时的任务,多线程下5分钟就完成了. 执行效率提升10倍以上,执行效率提升10倍以上,执行效率提升10倍以上. 重要的事情说三遍! 本文不深入介绍具体的原理,大家如果要实现类似的功能,只需要
-
java利用Future实现多线程执行与结果聚合实例代码
目录 场景 解决 总结 场景 网站智能问答场景,需要对多个分类查询,结果聚合展示 由于每种分类都有自己的业务逻辑,有的需要查询数据库中间库,有的需要查询elasticsearch搜索引擎,有的需要调用第三方接口,数据查询要分开进行,没法一次查询搞定 实际上这几个查询不相关,可以同时进行,现在串行,使该场景下,智能问答返回较慢 解决 最简单的逻辑,肯定就是java多线程,将串行改为并行 这样查询返回时间,就取决于最慢的一个查询,返回时间大大缩短 页面返回一般要求三秒内,实际项目上我们要求1秒内返回
-
pytest多进程或多线程执行测试实例
目录 前言: 分布式执行用例的原则: 项目结构 测试脚本 多进程执行用例之pytest-xdist pytest-xdist分布式测试的原理: pytest-xdist分布式测试的流程: 第一步:master创建worker 第二步:workers收集测试项用例 第三步:master检测workers收集到的测试用例集 第四步:master分发测试用例 第五步:worker执行测试用例 第六步:测试结束 多线程执行用例之pytest-parallel 常用参数配置 pytest-parallel
-
Powershell小技巧之使用Jint引擎在PowerShell中执行Javascript函数
这里演示如何利用PowerShell将一段Javascript函数字符串交给Jint引擎去执行. 执行Javascript函数 .Net版的Javascript解释器 可以从Git上获取Jint的代码,也可以从nuget上下载Jint的程序集. Jint是一个面向.Net的Javascript解释器.Jint不会把Javascript编译成.Net字节码,所以它非常适用于脚本小且运行起来速度快的工程,或者运行在不同平台上的脚本. PowerShell调用 拿到Dll根据-Path参数直接使用Ad
-
Shell中实现“多线程”执行脚本文件完美解决方案
即比如我有100个可执行文件,互相间没有特别的先后执行关系,如CODE: 复制代码 代码如下: job_1 job_2 job_2 ..... job_100 想用csh/bash来多线程调用执行. 比如一次开5个线程,那么job_1,2,3,4,5一起先开始,那么其中任何一个线程如果先执行完成,则继续执行下一个没有初执行过的文件,如job_6,7,8....,这样一直以所指定的线程数来执行所有100个文件. 我本来想用 "&" 来放入后台,可是这样我一次可以指定5放入后台,但
-
PowerShell中执行Javascript的方法示例
背景与问题 别人写了一个Web应用程序,使用的是ASP.NET Forms技术.其中用到了一个DropdownList控件,用户选择了某项后,页面会回传,然后在下面再动态的显示另外一个控件,逻辑很简单. 这是产生的的部分的html源码: 复制代码 代码如下: <select name="eventTypeDropDown" id="eventTypeDropDown" onchange="javascript:setTimeout('__doPost
-
在ironpython中利用装饰器执行SQL操作的例子
比较喜欢python的装饰器, 试了下一种用法,通过装饰器来传递sql,并执行返回结果 这个应用应该比较少 为了方便起见,直接使用了ironpython, 连接的mssql server # -*- coding: utf-8 -*- import clr clr.AddReference('System.Data') from System.Data import * from functools import wraps conn_str = "server=localhost;databa
随机推荐
- Spring配置使用之Bean生命周期详解
- 快速启动桌面图标丢失的解决方法
- oracle的导入导出注意事项及心得分享
- asp.net创建位图生成验证图片类(验证码类)
- javascript 实现字符串反转的三种方法
- ASP.NET取得所有颜色值示例
- PHP的FTP学习(四)
- php文件操作实例代码
- Python多线程结合队列下载百度音乐的方法
- C#操作SQLite数据库方法小结(创建,连接,插入,查询,删除等)
- C#基于Windows服务的聊天程序(1)
- Android控件之使用ListView实现时间轴效果
- MySql实现跨表查询的方法详解
- Iframe自适应高度兼容ie,firefox多浏览器
- Linux 下dmidecode查看内存条数的命令介绍
- CentOS 7.0编译安装lnmp教程(Nginx1.6.0+MySQL5.6.19+PHP5.5.14)
- PowerShell小技巧之同时使用可选强制参数
- sqlserver 千万数量级分页存储过程代码
- JavaScipt基本教程之前言
- 谈谈javascript中使用连等赋值操作带来的问题