首页 > 编程语言 >piscina nodejs woker 线程池实现

piscina nodejs woker 线程池实现

时间:2023-11-22 17:22:26浏览次数:40  
标签:piscina const js return 线程 path woker

nodejs 线程池工具还是很多的,piscina 是一个比较活跃的项目

包含的特性

  • 快速
  • 包含了固定以及可变任务场景
  • 支持灵活的线程池大小
  • 异步追踪支持
  • 取消支持
  • 支持comonj,esm,以及ts
  • 自定义任务队列
  • linux 系统上可选的cpu 调度支持

参考使用

  • app.js
const path = require('path');
const Piscina = require('piscina');
 
const piscina = new Piscina({
  filename: path.resolve(__dirname, 'worker.js')
});
 
(async function() {
  const result = await piscina.run({ a: 4, b: 6 });
  console.log(result);  // Prints 10
  // 通过代码加载文件
  const resultv2 = await piscina.run({ a: 4, b: 100 },{filename: path.resolve(__dirname, 'as.js')});
  console.log(resultv2);  // Prints 10
})();
  • woker.js
module.exports = ({ a, b }) => {
    return a + b;
};
  • as.js
const { setTimeout } = require('timers/promises');
 
module.exports = async ({ a, b }) => {
  // Fake some async activity
  await setTimeout(1000);
  return a + b;
};
  • 多方法支持
    注意参数传递应该是一个对象
    比如rong.js
 
function add({ a, b }) { return a + b; }
 
function multiply({ a, b }) { return a * b; }
 
module.exports = {
    add,
    multiply
};

说明

tinypool 是一个fork自piscina 的一个项目,移除了一些不需要的功能

参考资料

https://www.npmjs.com/package/tinypool
https://github.com/poolifier/poolifier
https://github.com/piscinajs/piscina
https://www.npmjs.com/package/worktank

标签:piscina,const,js,return,线程,path,woker
From: https://www.cnblogs.com/rongfengliang/p/17849859.html

相关文章

  • 关于阻塞多线程
    关于阻塞多线程同步方式理解:一个循环循环100次。多线程方式理解:开10个循环同时执行循环,每个循环循环10次。......
  • python多线程中一种错误的写法
    直接先上错误代码:importmultiprocessingdeffirst_way():init=3defprocess_function(item):result=item*initreturnresultdata=[1,2,3,4,5,6,7,8,9,10]pool=multiprocessing.Pool(processes=4)#创建一个......
  • Linux多线程
    文章参考:爱编程的大丙(subingwen.cn)一.线程概述线程是一种轻量级的,在Linux环境下,由于Linux内核起初并未设计线程,只有进程,因此将线程本质上仍是进程。而在实际处理中,进程是操作系统最小的分配资源单位,而线程是操作系统最小的调度执行单位。区别如下:空间上:每一个进程都有......
  • 线程基础
    线程和进程1.进程是系统进行资源分配和调度的独立单位,每一个进程都有它自己的内存空间和系统资源2.进程实现多处理机环境下的进程调度,分派,切换时,都需要花费较大的时间和空间开销3.为了提高系统的执行效率,减少处理机的空转时间和调度切换的时间,以及便于系统管理,所以有了线程,线程......
  • 多线程的应用
    应用之异步调用以调用方角度来讲,如果需要等待结果返回,才能继续运行就是同步不需要等待结果返回,就能继续运行就是异步1)设计多线程可以让方法执行变为异步的(即不要巴巴干等着)比如说读取磁盘文件时,假设读取操作花费了5秒钟,如果没有线程调度机制,这5秒cpu什么都做不了,其它代......
  • SQLAlchemy快速使用、SQLAlchemy原生操作、SQLAlchemy操作表、一对多关系、多对多关系
    SQLAlchemy快速使用介绍#SQLAlchemy是一个基于Python实现的ORM框架,对象关系映射#orm框架----》djangoorm--》只能用在django中,不能独立使用#python界的orm框架-peewee:小型-sqlalchemy:企业级,支持异步,用在异步框架中-djagnoormm-TortoiseORM......
  • 7.1 Windows驱动开发:内核监控进程与线程回调
    在前面的文章中LyShark一直在重复的实现对系统底层模块的枚举,今天我们将展开一个新的话题,内核监控,我们以监控进程线程创建为例,在Win10系统中监控进程与线程可以使用微软提供给我们的两个新函数来实现,此类函数的原理是创建一个回调事件,当有进程或线程被创建或者注销时,系统会通过回......
  • 多线程之start()和run()
    在实例调用的函数中加入打印当前线程的名字,分别用start()方法和run()方法启动线程检查有什么区别:start()123456789101112131415161718192021222324import threadingimport time def worker():    count = 1    while True......
  • 多线程
    进程之间不能共享内存,但线程之间共享内存非常容易。操作系统在创建进程时,需要为该进程重新分配系统资源,但创建线程的代价则小得多。因此使用多线程来实现多任务并发执行比使用多进程的效率高python语言内置了多线程功能支持,而不是单纯地作为底层操作系统的调度方式,从而简化了pyth......
  • 设置线程池并发数
    intcount=Environment.ProcessorCount;//取得cpu的内核数ThreadPool.GetMaxThreads(outintw1,outinth1); //默认是2028,若设置的数量小于cpu的内核数,则返回false表示无效,仍是2048,所以当设置max时先判断一个是否小于Environment.ProcessorCount,如果小于是无效的......