Skip to content

Commit b847d04

Browse files
committed
Clean up
1 parent a1053f1 commit b847d04

File tree

12 files changed

+314
-133
lines changed

12 files changed

+314
-133
lines changed

README.md

Lines changed: 98 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# parallelizer [![Go Report Card](https://goreportcard.com/badge/github.com/shomali11/parallelizer)](https://goreportcard.com/report/github.com/shomali11/parallelizer) [![GoDoc](https://godoc.org/github.com/shomali11/parallelizer?status.svg)](https://godoc.org/github.com/shomali11/parallelizer) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
22

3-
Simplifies the parallelization of function calls with an optional timeout
3+
Simplifies creating a pool of workers that execute jobs in parallel
44

55
## Usage
66

@@ -25,7 +25,8 @@ import (
2525
)
2626

2727
func main() {
28-
group := parallelizer.DefaultGroup()
28+
group := parallelizer.NewGroup()
29+
defer group.Close()
2930

3031
group.Add(func() {
3132
for char := 'a'; char < 'a'+3; char++ {
@@ -39,7 +40,7 @@ func main() {
3940
}
4041
})
4142

42-
err := group.Run()
43+
err := group.Wait()
4344

4445
fmt.Println()
4546
fmt.Println("Done")
@@ -70,43 +71,26 @@ import (
7071
)
7172

7273
func main() {
73-
options := &parallelizer.Options{Timeout: time.Second}
74-
group := parallelizer.NewGroup(options)
74+
group := parallelizer.NewGroup()
75+
defer group.Close()
7576

7677
group.Add(func() {
7778
time.Sleep(2 * time.Second)
78-
79-
for char := 'a'; char < 'a'+3; char++ {
80-
fmt.Printf("%c ", char)
81-
}
8279
})
8380

84-
group.Add(func() {
85-
time.Sleep(2 * time.Second)
86-
87-
for number := 1; number < 4; number++ {
88-
fmt.Printf("%d ", number)
89-
}
90-
})
91-
92-
err := group.Run()
81+
err := group.Wait(parallelizer.WithTimeout(time.Second))
9382

9483
fmt.Println()
9584
fmt.Println("Done")
9685
fmt.Printf("Error: %v", err)
97-
fmt.Println()
98-
99-
time.Sleep(3 * time.Second)
10086
}
10187
```
10288

10389
Output:
10490

10591
```text
10692
107-
Done
10893
Error: timeout
109-
a 1 b 2 c 3
11094
```
11195

11296
## Example 3
@@ -122,8 +106,8 @@ import (
122106
)
123107

124108
func main() {
125-
options := &parallelizer.Options{WorkerPoolSize: 10}
126-
group := parallelizer.NewGroup(options)
109+
group := parallelizer.NewGroup(parallelizer.WithPoolSize(10))
110+
defer group.Close()
127111

128112
for i := 1; i <= 10; i++ {
129113
i := i
@@ -132,7 +116,7 @@ func main() {
132116
})
133117
}
134118

135-
err := group.Run()
119+
err := group.Wait()
136120

137121
fmt.Println()
138122
fmt.Println("Done")
@@ -161,8 +145,8 @@ import (
161145
)
162146

163147
func main() {
164-
options := &parallelizer.Options{WorkerPoolSize: 1}
165-
group := parallelizer.NewGroup(options)
148+
group := parallelizer.NewGroup(parallelizer.WithPoolSize(1))
149+
defer group.Close()
166150

167151
for i := 1; i <= 10; i++ {
168152
i := i
@@ -171,7 +155,7 @@ func main() {
171155
})
172156
}
173157

174-
err := group.Run()
158+
err := group.Wait()
175159

176160
fmt.Println()
177161
fmt.Println("Done")
@@ -185,4 +169,89 @@ Output:
185169
1 2 3 4 5 6 7 8 9 10
186170
Done
187171
Error: <nil>
172+
```
173+
174+
## Example 5
175+
176+
Showing an example without calling `Wait`
177+
178+
```go
179+
package main
180+
181+
import (
182+
"fmt"
183+
"github.com/shomali11/parallelizer"
184+
"time"
185+
)
186+
187+
func main() {
188+
group := parallelizer.NewGroup()
189+
defer group.Close()
190+
191+
group.Add(func() {
192+
fmt.Print("Worker 1")
193+
})
194+
195+
fmt.Println()
196+
fmt.Println("We did not wait!")
197+
198+
time.Sleep(time.Second)
199+
}
200+
```
201+
202+
Output:
203+
204+
```text
205+
206+
We did not wait!
207+
Worker 1
208+
```
209+
210+
## Example 6
211+
212+
Showing an example with a mixuture of `Add` and `Wait` calls.
213+
214+
```go
215+
package main
216+
217+
import (
218+
"fmt"
219+
"github.com/shomali11/parallelizer"
220+
)
221+
222+
func main() {
223+
group := parallelizer.NewGroup()
224+
defer group.Close()
225+
226+
group.Add(func() {
227+
fmt.Println("Worker 1")
228+
})
229+
230+
group.Add(func() {
231+
fmt.Println("Worker 2")
232+
})
233+
234+
group.Wait()
235+
236+
fmt.Println("Workers 1 and 2 have finished")
237+
238+
group.Add(func() {
239+
fmt.Println("Worker 3")
240+
})
241+
242+
group.Wait()
243+
244+
fmt.Println("Worker 3 has finished")
245+
}
246+
```
247+
248+
Output:
249+
250+
```text
251+
Worker 2
252+
Worker 1
253+
Workers 1 and 2 have finished
254+
Worker 3
255+
Worker 3 has finished
256+
188257
```

examples/example1.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import (
66
)
77

88
func main() {
9-
group := parallelizer.DefaultGroup()
9+
group := parallelizer.NewGroup()
10+
defer group.Close()
1011

1112
group.Add(func() {
1213
for char := 'a'; char < 'a'+3; char++ {
@@ -20,7 +21,7 @@ func main() {
2021
}
2122
})
2223

23-
err := group.Run()
24+
err := group.Wait()
2425

2526
fmt.Println()
2627
fmt.Println("Done")

examples/example2.go

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,16 @@ import (
77
)
88

99
func main() {
10-
options := &parallelizer.Options{Timeout: time.Second}
11-
group := parallelizer.NewGroup(options)
10+
group := parallelizer.NewGroup()
11+
defer group.Close()
1212

1313
group.Add(func() {
1414
time.Sleep(2 * time.Second)
15-
16-
for char := 'a'; char < 'a'+3; char++ {
17-
fmt.Printf("%c ", char)
18-
}
19-
})
20-
21-
group.Add(func() {
22-
time.Sleep(2 * time.Second)
23-
24-
for number := 1; number < 4; number++ {
25-
fmt.Printf("%d ", number)
26-
}
2715
})
2816

29-
err := group.Run()
17+
err := group.Wait(parallelizer.WithTimeout(time.Second))
3018

3119
fmt.Println()
3220
fmt.Println("Done")
3321
fmt.Printf("Error: %v", err)
34-
fmt.Println()
35-
36-
time.Sleep(3 * time.Second)
3722
}

examples/example3.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
)
77

88
func main() {
9-
options := &parallelizer.Options{WorkerPoolSize: 10}
10-
group := parallelizer.NewGroup(options)
9+
group := parallelizer.NewGroup(parallelizer.WithPoolSize(10))
10+
defer group.Close()
1111

1212
for i := 1; i <= 10; i++ {
1313
i := i
@@ -16,7 +16,7 @@ func main() {
1616
})
1717
}
1818

19-
err := group.Run()
19+
err := group.Wait()
2020

2121
fmt.Println()
2222
fmt.Println("Done")

examples/example4.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
)
77

88
func main() {
9-
options := &parallelizer.Options{WorkerPoolSize: 1}
10-
group := parallelizer.NewGroup(options)
9+
group := parallelizer.NewGroup(parallelizer.WithPoolSize(1))
10+
defer group.Close()
1111

1212
for i := 1; i <= 10; i++ {
1313
i := i
@@ -16,7 +16,7 @@ func main() {
1616
})
1717
}
1818

19-
err := group.Run()
19+
err := group.Wait()
2020

2121
fmt.Println()
2222
fmt.Println("Done")

examples/example5.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"github.com/shomali11/parallelizer"
6+
"time"
7+
)
8+
9+
func main() {
10+
group := parallelizer.NewGroup()
11+
defer group.Close()
12+
13+
group.Add(func() {
14+
fmt.Print("Worker 1")
15+
})
16+
17+
fmt.Println()
18+
fmt.Println("We did not wait!")
19+
20+
time.Sleep(time.Second)
21+
}

examples/example6.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"github.com/shomali11/parallelizer"
6+
)
7+
8+
func main() {
9+
group := parallelizer.NewGroup()
10+
defer group.Close()
11+
12+
group.Add(func() {
13+
fmt.Println("Worker 1")
14+
})
15+
16+
group.Add(func() {
17+
fmt.Println("Worker 2")
18+
})
19+
20+
group.Wait()
21+
22+
fmt.Println("Workers 1 and 2 have finished")
23+
24+
group.Add(func() {
25+
fmt.Println("Worker 3")
26+
})
27+
28+
group.Wait()
29+
30+
fmt.Println("Worker 3 has finished")
31+
}

0 commit comments

Comments
 (0)