Parallel
parallel executes any tasks in parallel by using Golang fanout fanin concurrency pattern
Install / Use
/learn @jigneshsatam/ParallelREADME
parallel
Concurrency Made Easy
<!--[](https://travis-ci.org/JigneshSatam/parallel)-->
<!--[](https://sourcegraph.com/github.com/JigneshSatam/parallel?badge)--> 
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
employeebe a user-defined type - Suppose fetching
employee detailsis an independent task and needs to be done be in parallel - Create a method
Execute()foremployeetype - Signature of Execute method
Execute() interface{} - Add the code to fetch the
employee detailsin thisExecute()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.Runby 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
