From 221b2c80964cfdf63029c0ef91d549e62fa38372 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Wed, 13 Apr 2022 07:28:53 -0600 Subject: [PATCH] go in 37;; fix so stdout emits, do go, fix py --- src/bash.sh | 1 + src/go.go | 42 ++++++++++++++++++++++++++++++++++++++++++ src/go/README.md | 0 src/python3.py | 9 +++++---- 4 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 src/go.go delete mode 100644 src/go/README.md diff --git a/src/bash.sh b/src/bash.sh index 83679de..b805b83 100644 --- a/src/bash.sh +++ b/src/bash.sh @@ -56,6 +56,7 @@ gather() { echo "> wait" >&2 wait echo "> /gather $ttl" >&2 + echo bash $ttl } if [ "$0" == "$BASH_SOURCE" ]; then diff --git a/src/go.go b/src/go.go new file mode 100644 index 0000000..1a4eff9 --- /dev/null +++ b/src/go.go @@ -0,0 +1,42 @@ +package main + +import ( + "fmt" + "log" +) + +func main() { + N := 100 + P := 3 + q := make(chan int) + scatter(N, P, q) + gather(N, P, q) +} + +func scatter(N, P int, q chan int) { + for i := 0; i < P; i++ { + go _scatter(i, N, P, q) + } +} + +func _scatter(i, N, P int, q chan int) { + start := i * (N / P) + chunk := N / P + if i == P-1 { + chunk += N % P + } + ttl := 0 + for j := start; j <= start+chunk; j++ { + ttl += j + } + log.Println(i, N, P, q, start, start+chunk, ttl) + q <- ttl +} + +func gather(N, P int, q chan int) { + ttl := 0 + for i := 0; i < P; i++ { + ttl += <-q + } + fmt.Println("go", ttl) +} diff --git a/src/go/README.md b/src/go/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/python3.py b/src/python3.py index 4cc4f30..d73b798 100644 --- a/src/python3.py +++ b/src/python3.py @@ -1,4 +1,5 @@ import threading +from sys import stderr import queue class T(threading.Thread): @@ -10,10 +11,10 @@ class T(threading.Thread): self.q = q def run(self): - print(self.n, self.p, self.i, self.q) start = self.i * ((self.n // self.p)) - chunk = self.n // self.p + (0 if i < self.p-1 else self.n%self.p) - self.q.put(sum([j for j in range(start, start+chunk)])) + chunk = self.n // self.p + (self.n%self.p if self.i == self.p-1 else 0) + print(self.n, self.p, self.i, self.q, start, start+chunk, file=stderr) + self.q.put(sum([j for j in range(start, start+chunk+1)])) Ts = [] N = 100 @@ -28,4 +29,4 @@ for i in range(P): ttl += Q.get() for t in Ts: t.join() -print(ttl) +print("python3", ttl)