論文紹介:Semantic segmentation using Vision Transformers: A survey
GAE/Goとsyncパッケージ
1. The Go gopher was designed by Renée French.
The gopher stickers was made by Takuya Ueda.
Licensed under the Creative Commons 3.0 Attributions license.
GAE/Goとsyncパッケージ
2018年3月2日(金)
@酔いどれGCPUG
5. Goの並行処理
■ ゴールーチン
■ 軽量なスレッドに近いもの
■ goキーワードをつけて関数呼び出し
■ チャネル
■ ゴールーチン間のデータのやり取り
■ 安全にデータをやり取りできる
5
チャネル
ゴールーチン
A
ゴールーチン
B
データ
データ
// 関数fを別のゴールーチンで呼び出す
go f()
6. GAE/Goでの並行処理の使い所
■ 並列度は1
● GAE/Go上ではゴールーチンは並列には実行されない
● ずっと1とは限らないので適切にロックは取ろう
■ ゴールーチンのスケジューラの挙動を把握する
● 特定の処理が走ると別のゴールーチンに処理が切り替わる
○ I/Oやシステムコール、チャネルのブロックなど
● Datastoreへ複数のリクエストを投げる場合には有効
○ 通信が発生しているため
Cloud
Datastore
App
Engine
Get A
Get B
Get C
14. 複数のゴールーチンの待機
■ sync.WaitGroupを使う
var wg sync.WaitGroup
wg.Add(1)
go func() { /* do something */ wg.Done() }()
wg.Add(1)
go func() { /* do something */ wg.Done() }()
wg.Wait()
Playgroundで動かす
14