タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

golangとioに関するa2ikmのブックマーク (2)

  • Go言語のio.Pipeでファイルを効率よくアップロードする方法

    パイプ(土管)をGo言語でも楽しめるはじめに前回はGo言語のmime/multipartパッケージによるファイルのアップロードを見ましたが、パフォーマンスの特徴にはあまり触れませんでした。 大規模なETLジョブや、制限の厳しいサーバーレスの環境などでは、ファイルを扱うプログラムのリソースを慎重に考える必要があります。記事ではメモリ使用量を大幅に減らすio.Pipeの使い方を見ていきます。 全てのコードはサンプルレポジトリにあります。 同期処理にある問題前回のコードをもう一度見てパフォーマンスを考えてみましょう。 // ファイルを開く file, _ := os.Open(filename) // リクエストボディのデータを受け取るio.Writerを生成する。 body := &bytes.Buffer{} // データのmultipartエンコーディングを管理するmultipart.W

    Go言語のio.Pipeでファイルを効率よくアップロードする方法
  • Goで入力と出力をくっつける練習 - Qiita

    具体的には、標準入力を取って、外部コマンド(今回はRuby、まあなんでもいい。docker execとかにつないだら夢がありそう)をそのまま流し込んで、出力を一行ずつ取る。 bufio.Scanner が、node.jsのcarrierみたいな感じで一行ずつ取るのに向いていた。あと、nodeの感覚でパイプをつなげられるgo-pipeを使った。これは便利だった。 スキャンし続けるgoroutineを回す コマンドの終了を監視するgoroutineを回す 標準入力を取るメインループを回す と言う感じでうまく行ったっぽい。 package main import ( "bufio" "fmt" "os" "os/exec" "gopkg.in/pipe.v2" ) func runScanLoop(scanner *bufio.Scanner) { for scanner.Scan() { if

    Goで入力と出力をくっつける練習 - Qiita
  • 1