SkillAgentSearch skills...

Parallel

parallel executes any tasks in parallel by using Golang fanout fanin concurrency pattern

Install / Use

/learn @jigneshsatam/Parallel
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

parallel

Concurrency Made Easy


Go Report Card Build  <!--[![Build Status](https://api.travis-ci.org/JigneshSatam/parallel.svg?branch=master)](https://travis-ci.org/JigneshSatam/parallel)--> Test Coverage Issue Count Code Climate GoDoc <!--[![Sourcegraph](https://sourcegraph.com/github.com/JigneshSatam/parallel/-/badge.svg)](https://sourcegraph.com/github.com/JigneshSatam/parallel?badge)--> License: MIT

parallel executes independent tasks in parallel by using Golang fanout fanin concurrency pattern

Installation

go get -u github.com/JigneshSatam/parallel

Usage

Example code snippet: https://play.golang.org/p/uHBw49pwFwt

Step 1: Import the package

import (
	"github.com/JigneshSatam/parallel"
)

Step 2: Create Execute() interface{} method for user defined type

  • Let employee be a user-defined type
  • Suppose fetching employee details is an independent task and needs to be  done be in parallel
  • Create a method Execute() for employee type
  • Signature of Execute method Execute() interface{}
  • Add the code to fetch the employee details in this Execute() method
// employee -> Let `employee` be a user-defined type
type employee struct {
	name string
}

// Execute() -> Create `Execute() interface{}` method for employee type
func (e employee) Execute() interface{} {
	return employeeDetails(e)
}

func employeeDetails(e employee) string {
	return "Employee details Name: " + e.name
}

Step 3: Call parallel.Run() method

  • Call parallel.Run by passing list of employees who's details to be fetched.
func Example() {
	employees := []employee{employee{"foo"}, employee{"bar"}, employee{"baz"}}

	// Call `parallel.Run()` to start parallel execution
	outputChannel := parallel.Run(employees)

	for op := range outputChannel {
		// Cast `interface{}` to desired output type
		output := op.(string)
		fmt.Println(output)
	}
}

// Unordered output:
// "Employee details Name: bar"
// "Employee details Name: foo"
// "Employee details Name: baz"

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update the tests as appropriate.

License

This project is licensed under the MIT License - see the LICENSE.md file for details

View on GitHub
GitHub Stars7
CategoryDevelopment
Updated2y ago
Forks1

Languages

Go

Security Score

75/100

Audited on May 31, 2023

No findings