Parallel.js初探续集
@author mrbean
例子均来源于github parallel.js
昨天写的第一篇今天一看居然有50+的阅读量了,感觉很激动啊,但是也有点害怕毕竟这只是自己笔记性质的一点东西,所以赶紧拿起来再看看。其实自己也没什么把握,所以希望大家看的话有什么不同的以及各种见解可以留个评论大家一起学习。
今天主要是解释一下示例代码,个人觉得就粗浅的用法来说只要是能看懂这几个例子就差不多了
一、
var p = new Parallel([1, 2, 3, 4, 5]); console.log(p.data); // prints [1, 2, 3, 4, 5]
这段代码就十分简单了,就是首先构造了一个新的parallel job然后使用.data输出其中的数据。个人另外测试了一下用string可以输出,用json貌似只是输出object
二、
var p = new Parallel('forwards'); // Spawn a remote job (we'll see more on how to use then later)
p.spawn(function (data) {
data = data.reverse(); console.log(data); // logs sdrawrof return data;
}).then(function (data) {
console.log(data) // logs sdrawrof
});
这段代码功能很简单就是首先像上面一样进行了初始化,然后调用spanw函数产生一个新的线程,然后使用一个匿名函数将数据逆转,最后输出。但是这份代码在我的浏览器(chrome for windows)上不能运行,第5行报错,说是不存在那个函数。
就然后就各种查,最后怀疑是可能他这个不支持这么用字符串(也可能是我的问题,希望有知道的或者自己运行成功的可以留言告诉我),于是加上一个split发现这样就可以了很是神奇。。。最后join一下就得到要的输出将结果了。
三、
var p = new Parallel([0, 1, 2, 3, 4, 5, 6]),
log = function () { console.log(arguments); }; // One gotcha: anonymous functions cannot be serialzed
// If you want to do recursion, make sure the function
// is named appropriately
function fib(n) {
return n < 2 ? 1 : fib(n - 1) + fib(n - 2);
}; p.map(fib).then(log) // Logs the first 7 Fibonnaci numbers, woot!
代码很简单,就是一个初始化然后定义一个求斐波那契的函数,最后调用map函数,这样就可以对其中每个数据执行fib,最后输出修改过的数据(这个由于有递归过程用require的话应该会有一定的提速作用)
四、
var p = new Parallel([0, 1, 2, 3, 4, 5, 6, 7, 8]); function add(d) { return d[0] + d[1]; }
function factorial(n) { return n < 2 ? 1 : n * factorial(n - 1); }
function log() { console.log(arguments); } p.require(factorial) // Approximate e^10
p.map(function (n) { return Math.pow(10, n); }).reduce(add).then(log);
这段代码首先初始化,然后定义了一个add函数,这个函数是后面用来进行归纳(这个翻译貌似不太通。。。)结果的。然后一个求阶乘的函数,由于是递归的所以用了require进行优化。最后我们看执行的函数,首先调用map,这样存的数就成了【1,10,100,1000,10000,100000,1000000,10000000,100000000】,然后调用reduce函数传入参数add就可以把所有值相加得到最后结果111111111
五、
var p = new Parallel([1, 2, 3]); function dbl(n) { return n * 2; } p.map(dbl).map(dbl).map(dbl).then(function (data) {
console.log(data); // logs [8, 16, 24]
}); // Approximate e^10
p.map(function (n) { return Math.pow(10, n) / factorial(n); }).reduce(add).then(log);
不解释。。。成功输出一个,不成功输出后一个(不过这没定义失败函数)。
六、
var p = new Parallel([1, 2, 3], { evalPath: 'https://raw.github.com/adambom/parallel.js/master/lib/eval.js' }); function cubeRoot(n) { return Math.pow(n, 1 / 3); } // Require a function
p.require(cubeRoot); // Require a file
p.require('blargh.js'); p.map(function (d) {
return blargh(20 * cubeRoot(d));
});
require可以接受字符串或者函数或者地址类型的参数,注意使用文件名要包含eval.js
require我的初步理解就是把一个东西放在所有线程都能看得到的地方,这个主要应该是饮用一些重要的重复利用率较高的文件。
Parallel.js初探续集的更多相关文章
- Parallel.js初探
今天闲着看了一下Parallel.js.这个库暂时貌似还没有什么中文的介绍(可能暂时用的人都不多吧).所以就只能上github找它得源码和介绍看看了.貌似它的代码也不多,以后可以深入研究一下. 先简单 ...
- Node.js初探之GET方式传输
Node.js初探之GET方式传输 例子:form用GET方法向后台传东西 html文件: <form action="http://localhost:8080/aaa" ...
- Node.js 初探
概念 Node.js 是构建在Chrome javascript runtime之上的平台,能够很容易的构建快速的,可伸缩性的网络应用程序.Node.js使用事件驱动,非阻塞I/O 模式,这使它能够更 ...
- vue.js初探
前言 入手2016最火前端框架之一vue.js.大概从网上找了些资料看了下vue.js,从网上的资料来看只能惊叹其发展速度太快,让我意外的是其作者是华人的前提下作品这么受欢迎. 网上的博客和教程各种组 ...
- Node.js系列之node.js初探
官方介绍:Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable n ...
- [转]backbone.js 初探
本文转自:http://weakfi.iteye.com/blog/1391990 什么是backbone backbone不是脊椎骨,而是帮助开发重量级的javascript应用的框架. 主要提供了 ...
- angular.js初探
2015年7月27日 22:26:35 星期一 用在我论坛里的小栗子: 先列出来一级回帖, 点击帖子前边的"查看回复"按钮无刷新的去请求该帖子的所有回复 首先要引用js文件, 我这 ...
- Underscore.js 初探
一. 简介 Underscore 这个单词的意思是“下划线”. Underscore.js 是一个 JavaScript 工具库,提供了一整套的辅助方法供你使用. Think that - ...
- Node.js初探之hello world
昨天公司内部培训,主讲人王老板对Node.js评价很高,连用几个“变态”来形容,恰好今天周末,有时间来认识下Node.js,对一门新语言最好的认识,是让其输出“hello world”,今天我就利用N ...
随机推荐
- php多线程抓取信息测试例子
php多线程抓取信息测试例子 PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程.多线程在处理重复性的循环任务,能够大大缩短程序执行时间. PHP扩展下载:htt ...
- 【架构】Google的大规模集群管理工具Borg
参考资料: http://www.cnblogs.com/YaoDD/p/5374393.html http://www.cnblogs.com/YaoDD/p/5351589.html
- MySQL thread pool【转】
本文来自:http://blog.chinaunix.net/uid-26896862-id-3993773.html 刚刚经历了淘宝的双11,真实感受到了紧张的氛围.尽管DB淡定的度过,但是历程中的 ...
- MongoDB 副本集的相关概念【转】
一.副本集基本概念 副本集(replica set) MongoDB的replica set是一个mongod进程实例簇,数据在这个簇中相互复制,并自动进行故障切换. MongoDB的数据库复制增加了 ...
- FFmpeg frei0r water 滤镜
FFmpeg frei0r water 滤镜, 在 linux 环境中很流畅,但在 XP 环境中抛出异常 研究一段时间修改了代码,能在 XP 里跑得动. sample.water.avi water. ...
- effective OC2.0 52阅读笔记(四 协议与分类)
23 通过委托与数据源协议进行对象间通信 总结:委托模式的常规委托模式中,信息从类Class流向受委托者delegate.数据源模式,信息从数据源datasource流向class.数据源和受委托者可 ...
- ASM:《X86汇编语言-从实模式到保护模式》第13章:保护模式下内核的加载,程序的动态加载和执行
★PART1:32位保护模式下内核简易模型 1. 内核的结构,功能和加载 每个内核的主引导程序都会有所不同,因为内核都会有不同的结构.有时候主引导程序的一些段和内核段是可以共用的(事实上加载完内核以后 ...
- ORACLE 远程导入导出数据库
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. ...
- ODBC连接发生错误:未发现数据源名称并且未指定默认驱动程序
程序在使用ODBC方式连接数据库时发生错误: ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序. 什么原因造成的呢? 本人使用&l ...
- Tmux的安装、使用与配置
tmux 安装.使用.配置 因上线需求,故需要使用tumx,方便上线 tmux功能 提供了强大的.易于使用的命令行界面 可横向.纵向分割窗口 窗格可以自由移动和调整大小,或者直接利用四个预设布局之一 ...