UNPKG

task-farmer

Version:

A simple multi-core task scheduler that works well with promises. Great for doing parallel data processing.

50 lines (49 loc) 1.39 kB
/// <reference types="node" /> import * as cluster from "cluster"; import { IScheduler } from "./scheduler"; import { ITask } from "./task"; export interface IClusterSchedulerOptions { verbose?: boolean; maxAllocations?: number; } export interface IWorkerRecord { workerIndex: number; workerId: string; allocations: number; maxAllocations: number; worker: cluster.Worker; } export interface IWorkerMap { [index: string]: IWorkerRecord; } export interface ITaskRecord { inputs: any[]; taskId: string; taskName: string; resolve: (result: any) => void; reject: (error: any) => void; } export interface ITaskMap { [index: string]: ITaskRecord; } export declare class ClusterScheduler implements IScheduler { private enableVerboseLogging; private maxAllocations; private numWorkers; private workers; private workerMap; private taskQueue; private pendingTasks; private whoami; constructor(numWorkers: number, options?: IClusterSchedulerOptions); init(mainFn: () => Promise<void>): Promise<void>; runTask(inputs: any[], task: ITask<any>): Promise<any>; private sendTask; private queueTask; private verbose; private trackWorker; private initWorker; private scheduleTask; private scheduleTasks; private shutdownWorkers; }