並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 62 件 / 62件

新着順 人気順

並列処理の検索結果41 - 62 件 / 62件

  • 【Pythonで高速化】I / Oバウンドとか並列処理とかマルチプロセスとかってなんぞや - Qiita

    アドベントカレンダー21日目です 昨日は@marusannの映画.comから人気映画をスクレイピングでした✨ スクレイピングといえば、最近知人から、Node.jsのpuppeteerをオススメしてもらいました 動的なサイトの情報はSeleniumで取得するのが最適だと思っていたのですが、puppeteerでも余裕だと聞きまして...❕ RubyやPHPでスクレイピングをしている人もおり、びっくり 知らないことばかりです 背景 Pythonで高速化したい!と思って調べていた並列処理、並行処理などなど 「なんとなくわかったつもり」でいる自分に喝を入れ、頭を整理するために、備忘録がてらこの記事を使わせていただきます 間違っている箇所などあれば、ご指摘お願いします! 🙂調べながら頭の中を整理🙂 並列処理と並行処理ってなんぞや コンピュータに複数の処理装置を内蔵し、複数の命令の流れを同時に実行す

      【Pythonで高速化】I / Oバウンドとか並列処理とかマルチプロセスとかってなんぞや - Qiita
    • Rubyでhttpリクエストを並列処理 - Qiita

      モチベーション api叩く時、いちいちループ処理のなかで叩くと時間がかかる。どうせならhttpリクエストを一気にやって時間を短縮したい Typhoeusの紹介 rubyでhttpリクエストの並列化を調べて見た結果、typhoeusのgemが具合が良さそうである。Rubygem.orgでも1000万ダウンロードを超えてるし、まだメンテもされてそう。 Typhoeusとは libcurlのラッパーgem。そもそもlibcurlとはクライアントサイドのurl転送ライブラリであり、よく使うcurlコマンドはこのlibcurlをベースにして動く。つまりruby標準のNet::httpとは別に、curlコマンド的な物を実現するものと認識しておけばOK?ちなみにtypoeusとはティポーエウス(ティポーン)とはギリシャ神話に出てくる神(怪物)らしい。 コードの例 Rubyの並列HttpリクエストGem

        Rubyでhttpリクエストを並列処理 - Qiita
      • bashのfor文の中身を並列処理させる · sacre

        こんなスクリプトがあったとして for i ($find ./src); do somecommand $i done forの中身 (somecommand) を並列で実行したい場合はこうすればよい for i ($find ./src); do somecommand $i & done wait いままでxargsを使ったりもしてたが、waitを使う方が分かりやすくてよい。 ただし、ループの数が数十とかで多くなってくるとプロセスを立ち上げすぎて遅くなったりするので、そういうときは xargs -P でやるのがよさそうではある。 参考 waitコマンド(子プロセスの完了を待つ) : JP1/Advanced Shell pidを指定しなかった場合は,実行中のすべての子プロセスの完了を待ちます tweet Share

        • 【Python】joblibを用いて簡単に『並列処理』を行う方法 - なろう分析記録

          今回はPythonのjoblibパッケージを用いて手軽に並列処理を行う方法をご紹介したいと思います。 joblib 『Joblib』とは Joblibパッケージはデータの外部保存や並列処理・並行処理などを簡単に行うために用いるパッケージです。 現在市販されているPCのCUPはマルチコア・マルチスレッドを機能を持つものが一般的となっていますが、デフォルトのPythonではそのうちの1スレッドしか処理に用いられないので、大抵の場合リソースを持て余すことになります。 そこでJoblibを用いた並列処理です。 並列処理を行うことでCUPのリソースをフル活用し、同時に複数の処理を走らせることが出来る様にできます。 Joblibのイメージ joblibの処理の流れとしては『あるリスト』を『ある関数』に送り、最終的に「処理結果のリスト」を得るといった感じです。 イメージ 処理の内容によっては途中で早い・

            【Python】joblibを用いて簡単に『並列処理』を行う方法 - なろう分析記録
          • シェルスクリプトで「パイプライン並列化」をガチでやってみた 〜 パイプ+並列処理でCPUの最大効率を引き出す知識 - Qiita

            はじめに シェルスクリプトはコマンドをパイプでつなぐだけで簡単にパイプライン並列化を行うことが出来ますが、効率よく並列処理を行えるかどうかは別の話です。ボトルネックやオーバーヘッドがあるので単純にパイプでいくつもコマンドをつないでいくだけで簡単にどこまでも効率よく並列処理が行われるなんて事は技術的にありえません。そんなに簡単なら他の言語でも採用しているはずです。この記事ではシェルスクリプトで「何も考えずに」パイプでコマンドを多数つなげるスタイルが CPU 性能を効率よく使う上でのアンチパターンであることを示し、パイプで CPU を効率的に使ってパフォーマンスをあげたい人が知らなければいけないパイプライン並列化の重要な基礎知識とtime コマンドの読み方を解説します。 コマンドをパイプでつないで並列処理を行うパイプライン並列化は簡単に使えますが、並列処理の手法の中でおそらくもっとも制御が難し

              シェルスクリプトで「パイプライン並列化」をガチでやってみた 〜 パイプ+並列処理でCPUの最大効率を引き出す知識 - Qiita
            • Pythonで並列処理のすすめ

              Python(CPython) の並列処理で適切にパフォーマンス改善する方法を解説します。 一般に並列処理で思い付くのはスレッド処理ですが、Python には GIL(グローバル・インタプリタ・ロック)と呼ばれるロック機構があるため、その方法ではパフォーマンス改善を望めないことがあります。 なぜならば Python コードを実行できるのは GIL を保持したスレッドだけなので複数スレッドで並列処理をしたつもりでも実際に実行されるのは1スレッドだけで、実質的には並行処理となってしまうからです。 当記事はスレッドベースの並行・並列処理の問題と、それに代わるプロセスベースの並列処理のメリットデメリットや大量のデータを扱う場合のパフォーマンス特性を解説します。 検証には Python 3.9.12 / Ubuntu 20.04.4 LTS を利用しています。 GIL の影響を見てみる 以下のような

                Pythonで並列処理のすすめ
              • 【処理高速化】パイプライン化による並列処理の考え方・手順・実装方法 | DevelopersIO

                カフェチームの山本です。 エッジデバイスでプログラムを動かしていると、ハードウェアの性能があまり高くないこともあり、所望の処理速度を得られないことが多いです。 今回は、こうした状況に対して、処理をパイプライン化することによって、全体の処理速度を高速化することを目指します。自分の実装したプログラムを例に、考え方・手順・実装方法(Python)について記載します。 ステップ0.スクリプトを用意する・状況を把握する ステップ0-1.処理概要 今回は以下のようなスクリプトを利用します。処理の概要は以下のとおりです。よくあるような、学習モデルを利用して物体を検出するスクリプトです。今回のスクリプトでは、カメラを複数接続し、同時に複数の画像を撮影して処理をしています。 前処理ではカメラとモデルをセットアップしています。ループ中の処理の流れとしては以下のとおりです。 画像取得:RealSenseというカ

                  【処理高速化】パイプライン化による並列処理の考え方・手順・実装方法 | DevelopersIO
                • PythonのThread(並列処理)は速度改善効果がないので「concurrent.futures」を使う - SE_BOKUのまとめノート的ブログ

                  目次 PythonのThread(並列処理)は速度改善効果がないのか確認 シーケンシャル実行ケースの計測 PythonのThreadを使うケースの時間計測 Threadで速度改善しないのがPythonの仕様 Pythonの並列処理で速度向上できる方法と計測結果 PythonのThread(並列処理)は速度改善効果がないのか確認 PythonのThreadで並列性による速度改善効果を期待しても無駄だと教えてもらったので試してみました。 同じ重たい処理をシーケンシャルに実行するのと、PythonのThreadを使って並列処理するので、どのくらい速度があがるのか?を確認してみます。 シーケンシャル実行ケースの計測 シーケンシャルの処理です。 import time # 単に時間がかかるだけの処理 def killing_time(number): return_list = [] for i i

                    PythonのThread(並列処理)は速度改善効果がないので「concurrent.futures」を使う - SE_BOKUのまとめノート的ブログ
                  • Python のプログラムを並列処理で高速化する - Morikatron Engineer Blog

                    こんにちは、モリカトロンでプログラマおじさんをやってる岡島です。 Python でプログラムを書いていると高速に実行したくなることが多々あると思います。 でも、「とにかく実行速度を最速に!」みたいな人は最初から Python なんて使わないですよね。 ということでプログラムの最適化にあんまり興味のない人が、出来るだけ手間をかけず、そこそこ効果が得られる方法を紹介していこうと思います。 並列処理で高速に処理する Python 標準の並列処理モジュール 処理を並列実行してみる 速度比較 マルチスレッドでの処理がなぜ遅いのか? GIL についてもっと詳しく マルチスレッドに価値はないのか? 実測して確認 マルチプロセスのデメリット プロセスの生成はスレッドよりもオーバヘッドが大きい 速度比較 子プロセスに渡すデータに Pickle 化できないオブジェクトがあってはいけない 結局、どうすればいいの

                      Python のプログラムを並列処理で高速化する - Morikatron Engineer Blog
                    • 重い初期化、並列処理, Singletonの罠, そしてInstancePoolへ

                      はじめに 初期化処理が重いインスタンスってありますよね。代表的な例だとJDBCコネクションとか。Factoryパターンで初期化を隠蔽するような奴は概ね重いのはどの言語でも一緒だと思います。 こういった重い処理を例えばループなどで大量に初期化してしまうのはかなりのコストになってしまい、特にバッチのようなチリツモな処理では無視できないほど実行時間に影響を与えてしまう恐れがあります。 そういった場合はSingletonなどを使ってインスタンスの生成コストを隠蔽しますが、マルチスレッド環境下だと影響が出る場合もあります。以前、そういうケースでバグってるのに出くわした事があるので、記憶の整理がてらまとめておこうと思います。 コード例はJavaですが、あまりJavaかどうかには依存しない考え方になっていると思うので、他の言語が得意な人は疑似コード程度に思っておいてください。 なお、JDBCを始めとした

                        重い初期化、並列処理, Singletonの罠, そしてInstancePoolへ
                      • AWS Step Functionsで大規模な並列処理を実施できるDistributed Mapを試してみた #reinvent | DevelopersIO

                        こんにちは、CX事業本部 IoT事業部の若槻です。 先日開催されたAWS re:Invent 2022で、AWS Step Functionsで大規模な並列処理を実施できるStep Functions Distributed Mapが発表されました。 AWS Step Functions launches large-scale parallel workflows for data processing and serverless applications Step Functions Distributed Map – A Serverless Solution for Large-Scale Parallel Data Processing | AWS News Blog S3 Bucket内のオブジェクトをもとに大規模なMap処理が行えるとのことで、実際に現地会場でKeynote

                          AWS Step Functionsで大規模な並列処理を実施できるDistributed Mapを試してみた #reinvent | DevelopersIO
                        • (ソースコードメモ)PyTorchでのCUDA側並列処理 - Qiita

                          はじめに PyTorchのCUDAプログラミングに絞って並列処理を見てみる。なお、CPU側の並列処理は別資料に記載済みである。ここでは、 C++の拡張仕様であるCUDAの基礎知識 カーネルレベルの並列処理 add関数の実装 im2col関数の実装 ストリームレベルの並列処理 DistributedDataParallelの呼び出し処理の実装 について説明する。 おことわり PyTorchでは、ATen配下で演算処理を行っている。しかし、その前身であるTorchの資産を引き継いでいるため、THC(TorcH Cuda)のTensorからATen/nativeに書き換え中である。古いTHCTensor部分は参考資料として引用しておくが、言及はしない。また、この書き換え作業は1年以上継続中でありゆっくりと進んでいる。あと一年以上はかかるのではと思う。 BLAS(行列演算)やcudnn(深層学習演

                            (ソースコードメモ)PyTorchでのCUDA側並列処理 - Qiita
                          • bashでの簡易な並列処理 - 気が向いたら書くやつ

                            動機 業務のなかで、ツール実行中のメモリフットプリントを測定する必要が出てきた。 簡易的な計測でいいというだったので、「測定対象のツールと、psなどのコマンドを並列実行してメモリ使用量を計測する」という方法を思いつき、シェルスクリプトで並列処理をする方法について調べた。 バックグラウンド実行による並列処理 所望の処理を&でバックグラウンドジョブとして実行し、waitで終了を待機する(プロセスIDを指定しない場合、すべてのバックグラウンドジョブを待つ)。 次の例では、それぞれ異なる回数のechoを実行する2つの処理を並列実行させ、同期をとっている。 #!/bin/bash # >>>>>> # para.sh # >>>>>> # 処理1 proc1() { for i in $(seq 5); do echo "proc1-$i" done } # 処理2 proc2() { for i

                              bashでの簡易な並列処理 - 気が向いたら書くやつ
                            • Pythonのmultiprocessを使って並列処理 - Qiita

                              次の記事の続き https://qiita.com/Octpascal/items/fcfcf172fc8d28f0d874 main ある関数のメモリ使用量をリアルタイムでプロットするコードを書いた。 方法 multiprocessを使いメモリ監視用の関数を起動 multiprocessを使い測定対象の関数を起動 測定用関数に対象のPIDを渡す 対象の関数の終了を検知 監視用関数を止める リアルタイムプロットの参考 https://qiita.com/dendensho/items/79e9d2e3d4e8eb5061bc from multiprocessing import Process, Value, Queue import os import psutil import matplotlib.pyplot as plt import datetime # リアルタイムプロット

                                Pythonのmultiprocessを使って並列処理 - Qiita
                              • AWS Lambdaで並列処理を行うことで処理を高速化する(Python編) - Qiita

                                はじめに みなさんAWS Lambda(以降はLambdaと表記)使ってますか? Lambdaには対応している言語が複数あるので、Go言語で記述されている方、Node.jsで記述されている方、Pythonで記述されているかたなど、 様々いらっしゃるかと思います。 APIのバックエンドとしてLambdaを設置する場合、Lambdaの処理時間は出来る限り短くしたい、と思われる方がほとんどだと思います。 理由としては、下記が挙げられるかと思います。 API Gatewayの時間制限が29秒のため、29秒を超える処理が出来ない APIの呼び出しに時間がかかると、ユーザービリティを著しく損なう では、Labmbdaの処理時間を短くしたいのですが、方法としては下記があります。 Lambdaの性能を上げる Lambdaの中で並列処理(マルチスレッド化、マルチプロセス化)を行う 今回は、Lambdaでの並

                                  AWS Lambdaで並列処理を行うことで処理を高速化する(Python編) - Qiita
                                • Pythonの並列処理(マルチプロセス)の基本と使い方|dot blog

                                  Pythonで『multiprocessing モジュール』の『Process クラス』を使った並列処理(マルチプロセス)の基本と使い方について解説します。コードの実行処理を高速化させたり、プロセスを並列化させることにより同時に複数のプログラムを処理できるようになります。 Pythonこの記事は約 分で読めます。(文字) Pythonの並列処理を行う方法の1つが『multiprocessing モジュール』を使う方法です。 『multiprocessing モジュール』を使うことで、複数のプロセス(サブプロセス)を生成し、マルチプロセッサーマシンの性能を最大限に引き出すことができます。また、サブプロセスを生成することで同時に複数の実行処理を行えることもメリットです。 『multiprocessing モジュール』のメリット マルチプロセッサーマシンの性能を活用し高速化できるサブプロセスを生

                                    Pythonの並列処理(マルチプロセス)の基本と使い方|dot blog
                                  • 『~無意識処理や並列処理の効果を感じました~』

                                    人生にキッカケを与えるメンタルコーチング 認知科学に基づくマインドデザインの秘訣ネガティブやモヤモヤを解消することで、心の豊かさや創造性を生み出すマインドデザインを提唱。本来のあなたの持つ魅力を引き出すための、マインドの使い方の秘訣をお伝えしています。

                                      『~無意識処理や並列処理の効果を感じました~』
                                    • 並列処理をGo/Rust/Kotlin/Python/JSで解説!思想の違いを体感しよう (2023/08/08 19:00〜)

                                      イベント概要 GO株式会社には、タクシーアプリ『GO』のユーザアプリや車載アプリ、次世代AIドラレコサービス『DRIVE CHART』、それらを支えるバックエンドAPIやAI基盤など、様々なプロダクトがあり、それらはプロダクトの特性に応じて Go、Kotlin、TypeScript、Python、Rust など様々な言語で実装されています。 Go: ほとんどのバックエンドサーバ Python: AIモジュールのバックエンドサーバ Kotlin: 乗務員、ユーザ向け Android アプリ TypeScript: 事業者管理画面などWebUIのフロントエンド Rust: AIドラレコなどエッジコンピューティング 今回のイベントでは、「並列処理、並行処理の手法」というテーマに絞って、Go、Python、Kotlin、Rust、TypeScript の5つの言語でそれぞれ解説します。言語によって

                                        並列処理をGo/Rust/Kotlin/Python/JSで解説!思想の違いを体感しよう (2023/08/08 19:00〜)
                                      • Spring Bootでparallelや@EnableAsyncで非同期処理や並列処理を実装する

                                        parallelメソッドは並列処理ですので非同期処理とは異なります。 以下ソースは、指定秒数かかるAPIを2回実行していますが、並列実行しているので指定秒数強で実行ができます。 /** * 指定秒数かかるAPI * * @param seconds * @return * @throws InterruptedException */ @RequestMapping(path = "/sleep/{seconds}", method = RequestMethod.GET) public ResponseEntity<String> sleep(@PathVariable String seconds) throws InterruptedException { Thread.sleep(Long.valueOf(seconds) * 1000L); // スリープするだけ return

                                          Spring Bootでparallelや@EnableAsyncで非同期処理や並列処理を実装する
                                        • 【Python】multiprocessing.Queueを活用した並列処理の最適化(サンプルコード付き) - Sabrou-mal サブロウ丸

                                          Pythonでプロセス並列処理を効率的に行うためのツールとして、multiprocessing.Poolは非常に便利です。しかし、下記のような状況では並列化により逆に処理速度が低下することがあります。 data = xxx # 非常に大きなオブジェクト (巨大なリストなど) def func(data, i, j): """並列化したい関数: data、i、jの3つの引数を受け取り、何かの処理を実行する関数""" return data[i] + data[j] # funcの入力 args = [ (data, i, j) for i in range(10) for j in range(10) ] with multiprocessing.Pool as pool: pool.map(func, args) これはなぜかというと、multiprocessing.Poolやmultip

                                            【Python】multiprocessing.Queueを活用した並列処理の最適化(サンプルコード付き) - Sabrou-mal サブロウ丸
                                          • 同期処理、非同期処理、並列処理のざっくりとした違い - Qiita

                                            外部のサーバと通信する関数を呼んだあと、レスポンスが返るまでに一旦関数から抜けて別の処理を進めて レスポンスを受け取り次第、呼び出し元に値を返す Aという関数が完了次第、実行したい関数(function)を引数として渡して実行させるものをコールバック関数という JavaScriptでは、上述のコールバック関数で処理順をコントロールできるが、ネストが深くなる(コールバック地獄)など可読性が損なわれることがあるため、場合によってasync/await/promise/resolve(),reject()を用いる。 A、B、Cの処理をよーいどん、で3つ同時にスタートする 複数のプロセス上で、複数のスレッドが立ち上がる 一つのプロセス上で、複数のスレッドを切り替えながら処理をすることは並行処理という。 私が初めて触った言語のJavaやGolang, Pythonなどで並列処理が可能 おわりに 同期

                                              同期処理、非同期処理、並列処理のざっくりとした違い - Qiita
                                            • 仕事や研究で使えるGNUParallelによる並列処理 - Qiita

                                              はじめに 「100種類の学習済みモデルの性能調査をしておいて、テストデータは10種類あるよ」 こう言われた場合、作業の方法は複数ある。 1. 1000(100 x 10)回試験を実行する。 2. プログラムを書いて自動化し、1回の実行で1000回試験を行えるようにする。 3. テストデータを1つに結合して100回試験を行い、後で10種類に戻す。 1はどんなに1回の試験に時間がかからなくてもまず選択しないだろう。プログラムに多少自身があるならおそらく2を選んだのではないか。 2を選んだ理由は「自動化できてるから待ってるだけで終わる」とか「人的ミスが減り、時間がかからないから」などが挙げられるだろう。 しかし、プログラムの作成に1000時間かかっていたとしたら?それなら3(もしくは1)が最も成果を挙げられる方法となる可能性がある。 また、プログラムの作成に時間をかけて、そのプログラムが今回の試

                                                仕事や研究で使えるGNUParallelによる並列処理 - Qiita