タグ

Qiitaと並列処理に関するsatoshieのブックマーク (4)

  • [Go]並行処理・ゴルーチン - Qiita

    ※親記事 [Go]プログラミングノート 1. 並行処理 Golangで指示できるのは 「並列処理でなく並行処理」 である。 並行処理と並列処理の違い Golangでは ゴルーチン によって並行処理を実装できる。 ゴルーチンを使って、マシンに並列処理してもらうためには、最低でも以下が満たされてなければならない。 CPUコア数が2以上であること GOMAXPROCSを2以上に設定していること この記事を参照。 2. ゴルーチン 概要は以下の通り。 Goランタイム(※1)が提供する軽量スレッド(※2)であり、ゴルーチンスケジューラ によって並行処理の制御がなされる。 通常のスレッド(OSが提供するスレッド)(※3)に比べて メモリ使用量 が小さく、スイッチングコスト(※4)を抑えることができる(CPUコア数2以上かつCPUコア数 >= GOMAXPROCSのとき)。 Golangのすべての処理は

    [Go]並行処理・ゴルーチン - Qiita
  • Python3.5で実装されたasync/awaitを使って軽量スレッドの性能ベンチマーク - Qiita

    Python3.5でasync/awaitが追加されていたのでメモリ消費量とコンテキストスイッチのコストの観点でベンチマークを取ってみました。 async/await構文とは 非同期処理やノンブロッキングI/O処理を良い感じに書ける非同期処理のパラダイムにおける最先鋭の構文です。C#に実装されたあと、C++,VB,Node.jsに実装されついにPythonにもやってきた!という感じです。特徴はいままでThreadingで頑張って書いてた非同期処理が、より簡潔により強力に書けるようになります。軽量スレッドとはマイクロスレッド、ファイバーとも呼ばれるもので、「C10K問題」(クライアント1万台問題)と言われるI/O待ちによってクライアント数が多いとハードウェアの性能が生かしきれない問題の解決策の1つです。I/O待ちの際に高速にコンテキストスイッチして他のクライアントを捌くことでハードウェアの性

    Python3.5で実装されたasync/awaitを使って軽量スレッドの性能ベンチマーク - Qiita
  • Python3のマルチプロセスPoolのメソッドはimap_unorderedを使うべし - Qiita

    from multiprocessing import Pool from time import sleep import time start = time.time() def do(waitTime): print("do waitTime:{} 開始から{}秒経過".format(waitTime,time.time() - start)) sleep(waitTime) return waitTime if __name__ == '__main__': waitTimes = [3,2,1] with Pool(10) as p: for result in p.map(do,waitTimes): print("result waitTime:{} 開始から{}秒経過".format(result,time.time() - start))

    Python3のマルチプロセスPoolのメソッドはimap_unorderedを使うべし - Qiita
  • Pythonでの並行処理と並列処理 - Qiita

    今回は自分なりに並行処理と並列処理を処理の方法の違いから使い分けをしてみたいと思います. プログラミング歴もQiitaへの投稿も経験が浅いので間違いや感想などあれば送っていただけると非常に励みになります. #環境 Ubuntu17.04 Python3.6.1 Intel core-i7 7500U #並行処理と並列処理の違い(基礎) https://docs.python.org/3/library/concurrency.html には並行処理を行うモジュールについて詳しく書いてあります. 並行処理(multi processing)と並列処理(multi threading)の違いというと,並行処理が今あるプロセスと別のプロセスを新たに起動し処理を行わせるのに対して,並列処理は今あるプロセスの中で複数のスレッドを立ち上げます. 料理でイメージすると,並行処理の立ち上げがそもそもの料理

    Pythonでの並行処理と並列処理 - Qiita
  • 1