tasks

C# 多任务之 Task

我的未来我决定 提交于 2020-04-02 15:34:05
Task 是什么 ? Task 是一个类, 它表示一个操作不返回一个值,通常以异步方式执行。 Task 对象是一个的中心思想 基于任务的异步模式 首次引入.NET Framework 4 中。 继承层次结构 System.Object    System.Threading.Tasks.Task      System.Threading.Tasks.Task<TResult> 因为由执行工作 Task 对象通常以异步方式执行在线程池线程上而不是以同步方式在主应用程序线程,您可以使用 Status 属性,以及 IsCanceled , , IsCompleted , ,和 IsFaulted 属性,以确定任务的状态。 大多数情况下,lambda 表达式用于指定的任务是执行的工作。 Task 怎么用 ? 创建和执行任务 Task 可以多种方式创建实例。 最常用的方法,它位于开头 .NET Framework 4.5, ,是调用静态 Run 方法。 Run 方法提供了简单的方法来启动任务使用默认值,并且无需额外的参数。 下面的示例使用 Run(Action) 方法来启动循环,然后显示循环迭代数的任务︰ using System; using System.Threading.Tasks; public class Example { public static void Main()

异步爬虫

我与影子孤独终老i 提交于 2020-03-25 20:33:50
<!doctype html> 异步爬虫 异步爬虫 基于线程池 搭建模拟网站,基于Flask框架 templates设置如下图,Flask框架只能使用jinja2进行渲染 第二步: 在templates中创建test.html 下面是python搭建Flask框架 #!/usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask,render_template from time import sleep 实例化一个app app = Flask(name) 创建视图函数&路由地址 @app.route('/bobo') def index_1(): sleep(2) return render_template('test.html') @app.route('/jay') def index_2(): sleep(2) return render_template('test.html') @app.route('/tom') def index_3(): sleep(2) return render_template('test.html') if name == "main": #debug=True表示开启调试模式:服务器端代码被修改后按下保存键会自动重启服务 app.run(debug=True)

爬虫黑科技,我是怎么爬取indeed的职位数据的

二次信任 提交于 2020-03-21 07:00:29
最近在学习nodejs爬虫技术,学了request模块,所以想着写一个自己的爬虫项目,研究了半天,最后选定indeed作为目标网站,通过爬取indeed的职位数据,然后开发一个自己的职位搜索引擎,目前已经上线了,虽然功能还是比较简单,但还是贴一下网址 job search engine ,证明一下这个爬虫项目是有用的。下面就来讲讲整个爬虫的思路。 确定入口页面 众所周知,爬虫是需要入口页面的,通过入口页面,不断的爬取链接,最后爬取完整个网站。在这个第一步的时候,就遇到了困难,一般来说都是选取首页和列表页作为入口页面的,但是indeed的列表页面做了限制,不能爬取完整的列表,顶多只能抓取前100页,但是这没有难倒我,我发现indeed有一个 Browse Jobs 页面,通过这个页面,可以获取indeed按地区搜索和按类型搜索的所有列表。下面贴一下这个页面的解析代码。 start: async (page) => { const host = URL.parse(page.url).hostname; const tasks = []; try { const $ = cheerio.load(iconv.decode(page.con, 'utf-8'), { decodeEntities: false }); $('#states > tbody > tr > td > a')

爬虫黑科技,我是怎么爬取indeed的职位数据的

烂漫一生 提交于 2020-03-20 16:31:09
最近在学习nodejs爬虫技术,学了request模块,所以想着写一个自己的爬虫项目,研究了半天,最后选定indeed作为目标网站,通过爬取indeed的职位数据,然后开发一个自己的职位搜索引擎,目前已经上线了,虽然功能还是比较简单,但还是贴一下网址 job search engine ,证明一下这个爬虫项目是有用的。下面就来讲讲整个爬虫的思路。 确定入口页面 众所周知,爬虫是需要入口页面的,通过入口页面,不断的爬取链接,最后爬取完整个网站。在这个第一步的时候,就遇到了困难,一般来说都是选取首页和列表页作为入口页面的,但是indeed的列表页面做了限制,不能爬取完整的列表,顶多只能抓取前100页,但是这没有难倒我,我发现indeed有一个 Browse Jobs 页面,通过这个页面,可以获取indeed按地区搜索和按类型搜索的所有列表。下面贴一下这个页面的解析代码。 start: async (page) => { const host = URL.parse(page.url).hostname; const tasks = []; try { const $ = cheerio.load(iconv.decode(page.con, 'utf-8'), { decodeEntities: false }); $('#states > tbody > tr > td > a')

计算资源整合模式

自闭症网瘾萝莉.ら 提交于 2020-03-08 11:14:36
【博文目录>>>】 计算资源整合模式 将多个任务或操作整合到一个计算单元中。这种模式可以提高计算资源利用率,并减少与在云托管应用程序中执行计算处理相关的成本和管理开销。 背景与问题 云应用程序经常实现各种操作。在某些解决方案中,最初可能会遵循关注点分离的设计原则,并将这些操作划分为单独托管和部署的离散计算单元(例如,作为Microsoft Azure Cloud Service中的单独角色,单独的Azure网站,或单独的虚拟机)。但是,尽管此策略可以帮助简化解决方案的逻辑设计,但是将大量计算单元部署为同一应用程序的一部分可能会增加运行时托管成本,并使系统的管理更加复杂 作为示例,图1显示了使用多个计算单元实现的云托管解决方案的简化结构。每个计算单元都在其自己的虚拟环境中运行。每个功能已实现为在其自己的计算单元中运行的单独任务(标记为任务A至任务E) 图1-使用一组专用计算单元在云环境中运行任务 每个计算单元即使在空闲或轻度使用时也会消耗可计费的资源。因此,这种方法可能并不总是最经济高效的解决方案。 在Azure中,此问题适用于云服务、网站和虚拟机中的角色。这些东西在它们自己的虚拟环境中执行。运行一组单独的角色、网站或虚拟机,这些操作旨在执行一组定义良好的操作,但这些操作需要作为单个解决方案的一部分进行通信和协作,这可能会导致资源利用效率低下。 解决方案 为了帮助降低成本、提高利用率

手把手教你开发Chrome扩展二:为html添加行为

杀马特。学长 韩版系。学妹 提交于 2020-03-07 20:22:58
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 上一节我们已经讲了Chrome扩展的基础知识,并构建了基础的html,这一节我们将就html DOM添加部分添加脚本,即脚本在我们的popup页面中进行的操作,页面所产生的变化。 正常情况下数据处理加载完成状态,这些数据是从本地数据读取的。 点击“添加新项”,出现输入框,输入文字后回车提交数据: 添加完成后将数据存储,同时添加DOM元素: 考虑到功能最简化处理,点击已标为完成的任务,将提示“删除或重置为未完成”: 以上功能为最核心功能,可以在此基础上进行扩展,比如任务分组,修改任务,任务提醒,网络同步数据等等。 下面开始相应的脚本内容。 为了避免全局变量,使用匿名函数方式,所有事件处理及数据绑定均在此函数中进行,同时定义与jQuery中的$()类似的函数: ? (function(){ var $=function(id){return document.getElementById(id);} })(); 建立Tasks对象,定义show()函数和hide()函数,同时存储几个常用的DOM对象。 ? var Tasks = { show:function(obj){ obj.className

Ansible自动化运维学习之四:playbook和roles

隐身守侯 提交于 2020-03-04 22:19:16
备注:文章事例部分代码会出现不对齐的情况,使用时,请注意格式对齐!! 第4 章 playbook和roles 4.1 ansible-playbook常用命令说明 ansible-playbook --help Usage: ansible-playbook playbook.yml Options: -e EXTRA_VARS,--extra-vars=EXTRA_VARS # 设置额外的变量,格式为key/value。-e "key=KEY", # 如果是文件方式传入变量,则-e "@param_file" --flush-cache # 清空收集到的fact信息缓存 --force-handlers # 即使task执行失败,也强制执行handlers --list-tags # 列出所有可获取到的tags --list-tasks # 列出所有将要被执行的tasks -t TAGS,--tags=TAGS # 以tag的方式显式匹配要执行哪些tag中的任务 --skip-tags=SKIP_TAGS # 以tag的方式忽略某些要执行的任务。被此处匹配的tag中的任务都不会执行 --start-at-task=START_AT_TASK # 从此task开始执行playbook --step # one-step-at-a-time:在每一个任务执行前都进行交互式确认 -

Celery如何使用与项目实践

北城余情 提交于 2020-03-01 02:52:45
一. Celery介绍 参考博客:http://www.cnblogs.com/alex3714/p/6351797.html 1、celery应用举例 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用celery 你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情 Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis 2、Celery有以下优点 简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的 高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务 快速:一个单进程的celery每分钟可处理上百万个任务 灵活: 几乎celery的各个组件都可以被扩展及自定制 3、Celery基本工作流程图 user:用户程序,用于告知celery去执行一个任务。 broker: 存放任务(依赖RabbitMQ或Redis,进行存储) worker:执行任务 二. celery简单使用 1、安装

多线程笔记 - Master-Worker

你说的曾经没有我的故事 提交于 2020-02-26 22:26:55
多线程的 Master-Worker 从字面上也是可以理解的. Master 相当于领导, 一个就够了, 如果是多个, 那么听谁的, 是个大问题. Master负责指派任务给 Worker. 然后对每个人完成的情况进行汇总. Worker 相当于具体干活的人, 完成领导分配的任务, 然后把成果交给领导. 这种模式, 有点类似大数据的 MapReduce. 但是比那个简单很多. 这里有个例子: 计算 1²+2²+......+100²的结果. 假如使用 Master-Worker 的方式来计算, 先假设 平方计算 比较耗时, 此处假设每一次平方运算耗时为 100ms. 那么此处要得到计算结果, 就至少需要 100 * 100ms = 10000 ms, 也就是 10s 的时间. 如果此处通过 Master-Worker 的模式来解决此问题, 那么时间会大大缩短. MyTask 用来存储待计算的数值, 如: 1, 2, 3 public class MyTask implements Serializable { private int id; private int num; public MyTask(int id, int num) { this.id = id; this.num = num; } ...... @Override public String toString(

ansible roles详解+搭建LAMP架构

回眸只為那壹抹淺笑 提交于 2020-02-25 17:05:16
ansible roles 在实际的工作当中,一个完整的项目实际上是很多功能体的组合,如果将所有的功能写在一个playbook中会存在如代码耦合程度高、playbook长而维护成本大、灵活性低等一系列的问题。使用roles能巧妙的解决这一系列的问题。roles是ansible1.2版本后加入的新功能,适合于大项目playbook的编排架构。 ansible roles目录结构 roles能够根据层次型结构自动装载变量文件、task以及handlers等。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们,roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。 roles/ common/ files/ templates/ tasks/ handlers/ vars/ defaults/ meta/ web/ files/ templates/ tasks/ handlers/ vars/ defaults/ meta/ roles内各目录含义解释 files:用来存放由copy模块或script模块调用的文件。 templates:用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。 tasks:此目录应当包含一个main.yml文件