並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 51件

新着順 人気順

並列処理の検索結果1 - 40 件 / 51件

  • 並列処理がとても苦手なPythonはプロセスを分けよう コードを書く時に意識したい2つのTipsと2つの落とし穴 | ログミーBusiness

    Go、Python、Kotlin、Rust、TypeScript の5つの言語について「並列処理、並行処理の手法」というテーマに絞り解説する「並列処理をGo/Rust/Kotlin/Python/JSで解説!思想の違いを体感しよう」。Python編では橘氏が登壇。Pythonで並列処理を行う際の設計方針と、実装上の癖について話します。 西川氏の自己紹介西川大亮氏(以下、西川):ここからはPython編の「ちょっとしたデータ分析の並列化」というタイトルで、西川から話します。 GOに勤める西川です。今やっているのは、タクシーやハイヤーの営業支援。「お客さんを乗っけていない時間、どこを走ったらいいの?」とか「どういうところで待っていたら注文来やすいの?」というところのナビをする、「お客様探索ナビ」というサービスのいろいろなことをしています。小さなサービスなのでいろいろやっている感じですね。 Py

      並列処理がとても苦手なPythonはプロセスを分けよう コードを書く時に意識したい2つのTipsと2つの落とし穴 | ログミーBusiness
    • Python 3.12で増えた並列処理と、これまでの並列処理の挙動を比べてみる - Qiita

      Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? この記事ですることを3行で Pythonの標準ライブラリでできる並列実行を、あらためて総当たりで速度比較しよう ウォーターフォールチャートで、それぞれの並列処理の処理時間の特徴を可視化しよう boto3の実行をモデルケースにして、どの並列処理が一番早いのかを調べよう この記事の結論を先に Python 3.12から本格的に使えるようになったサブインタープリターは、CPUで実行する処理について言えば、従来のサブプロセスよりも高速 boto3の実行は、サブインタープリターよりも署名付きURLの非同期実行のほうが速い → S3からの10ファイ

        Python 3.12で増えた並列処理と、これまでの並列処理の挙動を比べてみる - Qiita
      • POSIX準拠シェルスクリプトでマルチコアの能力を活用する並列処理の実装(最大並列数あり、GNU Parallel, xargsなし) - Qiita

        はじめに シェルスクリプトで並列処理を行う場合、一般的には GNU Parallel か xargs を使うのではないかと思います。しかし GNU Parallel はその名の通り GNU が提供しているツールですし xargs も並列数を指定する -P オプションは POSIX で規定されてないので動作する環境が限られます。また、これらは外部コマンドであるためシェル関数を呼び出すことが出来ないという制限もあります。これをシェルスクリプトのみで実装することで、環境依存すること無く並列処理を実現することが出来ます。 補足 続編記事も書きました。 POSIX準拠シェルスクリプトでfind -print0やxargs -0を使わずにスペースや改行が含まれたファイル名を処理する 続・POSIX準拠シェルスクリプトでマルチコアの能力を活用する並列処理の実装(名前付きパイプ版) 実装 実は最大並列数の

          POSIX準拠シェルスクリプトでマルチコアの能力を活用する並列処理の実装(最大並列数あり、GNU Parallel, xargsなし) - Qiita
        • WebAssemblyでマルチスレッドによる並列処理を可能にする「wasi-threads」仕様の提案、ByteCode Allianceが明らかに

          WebAssemblyにおける業界標準仕様などを推進する団体「ByteCode Alliance」は、WebAssemblyでマルチスレッドによる高速な並列処理を可能にする「wasi-threads」仕様を提案したことを明らかにしました。 W3Cでのマルチスレッド仕様策定は現在フェーズ3 WebAssemblyは、Webブラウザ上で高速に実行可能なバイナリフォーマットとしてW3CのWebAssembly Working Groupで標準化が行われており、現在でも新たな機能追加や性能向上のための議論が行われています。 現時点でWebAssemlbyはシングルスレッド処理のみ可能ですが、W3Cの仕様策定の作業の中にはマルチスレッドを実現する「threads」の議論が進められており、フェーズ1のFeature Proposal(機能提案)、フェーズ2のProposed Spec Text Ava

            WebAssemblyでマルチスレッドによる並列処理を可能にする「wasi-threads」仕様の提案、ByteCode Allianceが明らかに
          • Python並行・並列処理を整理する (入門) - Qiita

            Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 概要 大量データに関するワークロードを、モノリシックに解決する場合、並行・並列処理の知識は活用できます 但し、一般にPythonにはGILが存在するため、正しい挙動を抑えておきたい所です 内容 Pythonにおける並行処理・並列処理 プロセス = OSが管理する実行単位 (CPUコア毎) スレッド = プロセス内の軽量な実行単位 (1CPUコア内) 上記前提を踏まえると、以下となります 並行処理 = 1つのプロセスに複数のスレッドが存在します (PythonはGILにより基本1プロセス制約です) 並列処理 = 複数のプロセスを並行して進

              Python並行・並列処理を整理する (入門) - Qiita
            • JavaScriptでGPUを簡単に扱えるライブラリ「GPU.js」レビュー、並列処理で多次元の演算が爆速に

              GPUを用いた並列演算に利用されるプログラミング言語といえば、機械学習の研究などに利用されるPythonが一般的ですが、JavaScriptによるウェブアプリでもGPUを用いたい場合があるはず。オープンソースのJavaScriptライブラリ「GPU.js」を使うと、スクリプトを実行するコンピューターのGPUを利用して並列処理を行うことで、多次元の演算などを高速に行うことができます。 GPU.js - GPU accelerated JavaScript https://gpu.rocks 今回GPU.jsを動かすシステムは以下。CPUはIntel Core i5-4570、GPUはAMD Radeon RX480、OSはUbuntu 20.04、ウィンドウシステムはWaylandを使用しています。 カーネルバージョンは5.4.0-42 ロードしているドライバーはこんな感じ。Linuxに標準

                JavaScriptでGPUを簡単に扱えるライブラリ「GPU.js」レビュー、並列処理で多次元の演算が爆速に
              • 並列処理と排他処理 - ROBOT PAYMENT TECH-BLOG

                こんにちは、ROBOT PAYMENTの開発統括室ペイメントシステム課のtaniguchikun です。 たまたま業務で並列処理と排他処理を実装することになったので、その辺について記事にしたいと思います。 並列処理とはなんぞや 例え話 排他処理 今回のキーワード ミューテックス セマフォ Lock関数(C#言語) チェックポイント 静的変数 サンプルコード ミューテックスの挙動確認 セマフォの挙動確認 ロック関数の挙動確認 並列処理とはなんぞや 恐らく本記事を読まれている方はエンジニアの方々だと思いますが、一応軽く解説をしたいと思います。 並列処理とは複数の処理を同時に行うといったものになります。 例え話 上記でピンとくる方は読み飛ばしていただいて問題ないです。 一般の方でプログラミングしたことがない方ですと例え話で説明した方がピンとくるものがあると思うので、現実世界のバスに例えたいと思い

                  並列処理と排他処理 - ROBOT PAYMENT TECH-BLOG
                • 続・MeCabの分かち書きを並列処理で高速化する

                  まとめ Pythonから巨大なテキストファイルを並列に読み込み・処理・書き込みする方法を紹介 読み込み: テキストファイルをバイト列として見て、プロセスごとにファイルの読み込み区間を割り振る 処理: multiprocessingを用いた並列処理 書き込み: プロセスごとにtmpファイルへ並列に書き込み & catによる結合 はじめに 日本語形態素解析器であるMeCabを用いると、日本語のテキストに対する解析や処理が簡単に実行できます。 特に最近は、BERTをはじめとする深層学習モデルへの入力のための前処理として、MeCabなどを用いて文を単語単位に分割する「分かち書き」を行う機会が多くなっています。 MeCabはコマンドラインから実行することもできますし、Pythonなどからプログラム的に呼び出すことも可能です。 特にコマンドラインから実行する場合は、インストールさえ終わっていれば以下の

                    続・MeCabの分かち書きを並列処理で高速化する
                  • AWSを活用した機械翻訳のためのGPU並列処理環境の構築

                    はじめにこんにちは、ストックマークでエンジニアをしている麻生です。ストックマークでは、「Anews」というウェブサービスを提供しています。この度、Anewsで新機能導入のために日次バッチの大規模なインフラ変更を行い、GPU並列処理環境を構築しましたのでご紹介します。 組織の自律化を支援するナレッジプラットフォーム「Anews」Anewsは国内外30,000メディアのニュースを毎日収集し、最先端の自然言語処理で個人や組織のミッションに即したニュースをレコメンドします。コメント機能で簡単にチームにアイデアを共有でき、社内の知見者から学ぶことでチームの情報感度が底上げされます。 エンタープライズを中心に、累計1500社以上のお客様にご利用いただいているサービスです。 英語記事をレコメンドする上での課題Anewsでは、記事への行動履歴からユーザーや組織の好みを学習し、記事をレコメンドしています。ユ

                      AWSを活用した機械翻訳のためのGPU並列処理環境の構築
                    • Rustによる並列処理でDynamoDBへのデータ投入を20倍高速化してみた

                      はじめに 言語として高速だと謳われているRust。そのRustを使用してDynamoDBへのデータ登録処理を直列処理と複数の並列アルゴリズム処理で速度比較してみました。 DynamoDB DynamoDBは公式で以下のように謳われています。 Amazon DynamoDB の応答時間は 1 桁ミリ秒で、最も要求の厳しいアプリケーションでも一貫してこのパフォーマンスを発揮できます。例を挙げると、2022 年の Amazon プライムデーに Amazon DynamoDB は、1 桁ミリ秒のパフォーマンスで、数兆回の API コールに対して 1 秒あたり 1 億 520 万件のリクエストを確実に処理しました。 上記だけみると爆速のようにも思われますが、読み込みと書き込み双方に以下の制限があります。 BatchWriteItemのデータ投入は1回で25リクエストまで、Queryのデータ取得は1回

                        Rustによる並列処理でDynamoDBへのデータ投入を20倍高速化してみた
                      • Pythonのように書けてGPU上で並列処理できる新プログラミング言語「Bend」、2D画像→3Dを高精度生成するGoogle「CAT3D」など重要論文5本を解説(生成AIウィークリー) | テクノエッジ TechnoEdge

                        2014年から先端テクノロジーの研究を論文単位で記事にして紹介しているWebメディアのSeamless(シームレス)を運営し、執筆しています。 1週間分の生成AI関連論文の中から重要なものをピックアップし、解説をする連載です。第47回目は、生成AI最新論文の概要5つを紹介します。 生成AI論文ピックアップ GPU上でネイティブ動作する並列処理が可能な新プログラミング言語「Bend」とランタイムシステム「HVM2」> 2D画像から3Dコンテンツを生成する「CAT3D」をGoogleが開発 大規模言語モデルは追加学習や新知識で幻覚生成が増加。Googleなどが調査 画像とテキストを使った長文生成が得意なAIモデル「Chameleon」をMetaが開発 Transformerを超える「Mamba」は視覚認識タスクに必要か? 開発した「MambaOut」モデルで検証 GPU上でネイティブ動作する並

                          Pythonのように書けてGPU上で並列処理できる新プログラミング言語「Bend」、2D画像→3Dを高精度生成するGoogle「CAT3D」など重要論文5本を解説(生成AIウィークリー) | テクノエッジ TechnoEdge
                        • Ruby 3.0正式版リリース。「Ruby 2の3倍速」到達、型の記述、スレッドセーフな並列処理など新機能

                          Ruby開発チームは、2020年12月25日にRubyの最新版となる「Ruby 3.0.0」正式版をリリースしました。Rubyは毎年12月25日に最新版がリリースされてきましたが、今回は2013年にRuby 2.0が登場以来7年ぶりのメジャーバージョンアップとなります。 Rubyは以前から実行速度が遅いことが指摘されていたため、Ruby 3はRuby 2の3倍の実行速度を目指す「Ruby 3x3」(ルビースリーバイスリー)構想の下で開発が進められてきました。 そして今回リリースされたRuby 3では、「Optcarrot」と呼ばれるファミコンのエミュレーションによるCPU負荷中心のベンチマークで3倍の性能が達成されたことが示されました。 この性能向上は、ランタイムがインタプリタからJITコンパイラに刷新されたことが大きな役割を果たしています。 そしてJITコンパイラは今後さらに改善されてい

                            Ruby 3.0正式版リリース。「Ruby 2の3倍速」到達、型の記述、スレッドセーフな並列処理など新機能
                          • PostgreSQL 13正式版リリース。B-Treeインデックスの重複排除、同一テーブル内でのVacuum並列処理など新機能

                            オープンソースのリレーショナルデータベース「PostgreSQL 13」の正式版がリリースされました(日本語プレスリリース。 PostgreSQLは、これまで2017年10月にPostgreSQL 10、2018年10月にPostgeSQL 11、2019年10月にPostgreSQL 12がリリースと、毎年この時期に順調にメジャーバージョンアップを続けています。 News: PostgreSQL 13 Released! https://t.co/krna5OWIq3 — PostgreSQL (@PostgreSQL) September 24, 2020 PostgreSQL 13では、標準インデックスであるB-Treeインデックスに重複排除(deduplication)機能が追加されたことで、重複したインデックスタプルをマージした効率の良い表現に変換しインデックスサイズを縮小。デー

                              PostgreSQL 13正式版リリース。B-Treeインデックスの重複排除、同一テーブル内でのVacuum並列処理など新機能
                            • GitHub Actionsで並列処理を作っていてヒヤッとした話 - ゆるりと

                              具体的な並列処理に関しては、会社ブログなどで公開するとは思いますが、GitHub Actionsで並列処理を作っていてヒヤッとした話を書いておきます。 TL; DR 1Workflowの合計時間ではなく、1Jobごとの時間でBillable timeを算出 10sec程度で終わるJobを100並列にすると、Workflowの合計時間が20分程度だとしてもBillable timeは100分になる Jobを変に並列化するとすぐに無料枠が消費される Action実行後すぐにBillable timeを見ても0なので、必ず時間をおいて確認する GitHub Actionsの課金について About billing for GitHub Actions に詳細が書いてありますが、大まかにまとめると、以下のような特徴になります。 Public repositoryであれば基本無料(一部例外あり) I

                                GitHub Actionsで並列処理を作っていてヒヤッとした話 - ゆるりと
                              • 並列処理管理ライブラリ task を含む、l4goの公開 | IIJ Engineers Blog

                                セキュリティオペレーションセンター と セキュリティ情報統括室 に所属。システム開発者(極) を目指すプログラマ としての活動と、セキュリティアナリストとして活動をしています。うさぎさんのぬいぐるみが相棒 こんにちは、くまさかです。 今回は、Go言語開発を支えるライブラリを公開しましたので、そちらの紹介記事です。 ちなみに今回の記事は、どうしてもGo言語寄りな話が少し登場します。 Go言語に関する説明は、本記事では割愛しますので、本記事を読む前や、読んだ後にGo言語自体を勉強したいと思った方は、IIJ Bootcamp で、僕が作成した Go言語入門コンテンツ か、Go言語 本家 Go tour をお試しください。 さて、では本題のライブラリ紹介です。 GitHub上では、l4go というところにまとめています。 https://github.com/l4go ライブラリの組織名を色々検討

                                  並列処理管理ライブラリ task を含む、l4goの公開 | IIJ Engineers Blog
                                • ChatGPTの画期的な点とは ~並列処理ができるのが大きな強み【これからはじめるChatGPTの基礎知識】

                                    ChatGPTの画期的な点とは ~並列処理ができるのが大きな強み【これからはじめるChatGPTの基礎知識】
                                  • LLMの根幹「Transformer」とは?並列処理に最適なワケ

                                    2017年にGoogleの研究者が提唱した深層学習モデルで、チャットAI「Chat GPT」などに使われる。「どこに注目するか」を重視したことで、自然言語処理での精度や処理速度を大幅に高めた。 米OpenAIの「ChatGPT」は2022年に公開されるやいなや、その精度の高さに世界が衝撃を受けた。このChatGPTは、同社の大規模言語モデル(LLM)「GPT(Chat Generative Pre-trained Transformer)」をベースにしている。Transformerこそ、LLMの根幹である。 Transformerはエンコーダー(符号器)とデコーダー(復号器)で構成し、「どこに注目するか」を重視するアテンション機構を中心としている。大規模並列処理に向いたモデルで、GPUでの処理を想定して設計した。 Transformerは米Google Brain(現在の米Google D

                                      LLMの根幹「Transformer」とは?並列処理に最適なワケ
                                    • その並列処理待った! 「Python 並列処理」でググったあなたに捧ぐasync, threading, multiprocessingのざっくりとした説明 - Qiita

                                      ※ 本記事ではざっくりとした理解を目的とするため、スレッドとプロセスとコア、非同期処理と並列処理と並行処理の違いについて詳細には取り扱いません。気になる方は下記の記事などをご参考ください。 async スレッド数もコア数も1 だから並列処理じゃなくない? というツッコミは正解です。正確には並列処理ではなくて「非同期処理」といいます。フロントエンドのJavascriptから始めた方にはなじみが深いかもしれませんが、「非同期処理」と「並列処理」は全く違う概念なのでご注意ください。 処理の概要としては、最初に複数のリクエストを投げておいて、レスポンスが全部帰ってくるまで待ち、応答が揃ってから処理を再開します。 これにより、応答に 3~7秒(平均5秒)かかるスクレイピングを100回行う場合、同期処理なら500秒程度かかるところ、asyncを使った非同期処理なら7,8秒程度で実行できます。 (外部と

                                        その並列処理待った! 「Python 並列処理」でググったあなたに捧ぐasync, threading, multiprocessingのざっくりとした説明 - Qiita
                                      • 並行処理と並列処理|Goでの並行処理を徹底解剖!

                                          並行処理と並列処理|Goでの並行処理を徹底解剖!
                                        • Rust で jemalloc を使ったら並列処理が速くなった

                                          Rust を使ってみたくなり、勉強のために簡単な CLI ツールを作ってみました。 そして無謀にも「どうせなら並列処理も試してみよう」と挑戦してみたのですが、ワーカースレッドを複数にするとガクっと遅くなってしまいました。 図 1 経過時間の比較 # ワーカースレッドが 1 の場合 $ time ./target/x86_64-unknown-linux-musl/release/xquo -w 1 < tmp/tmp_large.txt > /dev/null real 0m25.902s user 0m30.587s sys 0m1.637s # ワーカースレッドが 2 の場合 $ time ./target/x86_64-unknown-linux-musl/release/xquo -w 2 < tmp/tmp_large.txt > /dev/null real 0m45.006s

                                            Rust で jemalloc を使ったら並列処理が速くなった
                                          • Ractorで並列処理を試みる|グロービス・デジタル・プラットフォーム

                                            はじめまして、グロービスのサーバーサイドエンジニアをしている大澤(@qwyngg)と申します。 Ruby3、そしてRactorがでましたね! さっそくrbenv global 3.0.0して試していこうと思います。 Ractorとは?並行性のあるコードを書くための新機能です。RubyKaigiでGuildという名前を聞いたことがある方もいらっしゃると思いますが、そのGuildが名称を変えてリリースされました。 名前の通りActorモデルを参考にした機能だそうです。 Ractor.newにブロックを渡すことで並列処理を実行させることができます。 Ractor.new { 5.times do puts :hoge end } Ractor.new { 5.times do puts :fuga end } puts :sleep sleep(5) # Ractorの処理を待ちたいので適当にs

                                              Ractorで並列処理を試みる|グロービス・デジタル・プラットフォーム
                                            • JavaScript ES6のAsync/Awaitで非同期処理とエラー処理、並列処理を解説!初心者向け完全ガイド - deve.K's Programming Primer - プログラミング初心者のための入門ブログ

                                              この記事では、ES6のasync/await、およびPromises.all()を使用して非同期プログラミングを容易にする方法を学習します。 前回でのPromiseチュートリアルは以下で学ぶことができますので参照ください。 dev-k.hatenablog.com async/awaitとは asyncキーワード awaitキーワード Promise並列処理 async/awaitでのループ エラー処理 async/awaitでFetchを使用する方法 使用に関する注意点(ルール) 最後に async/awaitとは async/awaitは技術的に言えば、Promisesのシンタックスシュガー(Syntax sugar)となります。 シンタックスシュガーとは簡単に言ってしまえば、構文を省略しプログラムを書いていく事をシンタックスシュガーと言います。 ですが、これはプログラミング言語によっ

                                                JavaScript ES6のAsync/Awaitで非同期処理とエラー処理、並列処理を解説!初心者向け完全ガイド - deve.K's Programming Primer - プログラミング初心者のための入門ブログ
                                              • 並列処理入門 + Rubyでの新しい並列実行単位Ractor - Qiita

                                                この記事では、並列処理に関する入門的知識を解説する。 さらに、Rubyで開発されている新しい並列実行単位Ractorにも言及する。 まず、この話題をする上で混同しがちな用語についてまとめる。 並列処理(parallel)と並行処理(concurrent)について 並列処理 では、ある瞬間に複数の処理が同時に走る。 並行処理 では、複数の処理を時分割で順に処理する。並列処理とは異なり、ある瞬間に同時に走る処理は1つだけ。 ある複数の処理が実行されているタイミングを時系列で示すと、下図のようなイメージになる。 (青い線がある部分のみ処理が実行される) この記事では並列処理の動作について扱うが、並列処理のコードを書いても結局並行処理のように動いている場合もあることには注意。 (例えば、1コアのCPUでは2つ以上の処理を並列に動作させることはできない、など。) この辺りはOSやVMなどが良い感じに

                                                  並列処理入門 + Rubyでの新しい並列実行単位Ractor - Qiita
                                                • Goルーチンとチャネルを使用した並行・並列処理 具体的なコードをよく起こるトラブルとともに紹介 | ログミーBusiness

                                                  Go、Python、Kotlin、Rust、TypeScript の5つの言語について「並列処理、並行処理の手法」というテーマに絞り解説する「並列処理をGo/Rust/Kotlin/Python/JSで解説!思想の違いを体感しよう」。Go編では森下篤氏が登壇。Goの並列・並行処理のやり方を紹介します。 Goの並列・並行処理森下篤氏(以下、森下):私のところでは、Golangについて説明します。弊社は会社名もGOなので非常にわかりにくいのですが、基本的には大文字で「GO」と書くと会社を示すことが多いです。(スライドを示して)小文字の「Go」やスライドのアイコンを使った時には、言語のGoと思ってもらえると助かります。 まず、Goでの並列・並行処理について話します。独自の軽量スレッドであるGoルーチンというものがあって、Goルーチン同士の同期・非同期通信の仕組みであるチャネルが構文に含まれていま

                                                    Goルーチンとチャネルを使用した並行・並列処理 具体的なコードをよく起こるトラブルとともに紹介 | ログミーBusiness
                                                  • Dify v0.8.0でパラレル処理(並列処理)を活用したワークフローを作成する - Taste of Tech Topics

                                                    こんにちは、バックエンドエンジニアの前田です。 先日、以前自分が書いたコードのコメントが何を伝えたいのかがわからず、いかにわかりやすいコメントを書くことが大事かを身に染みて痛感しました。 さて、今回はDifyのアップデートで新規追加された機能「パラレル処理(並列処理)」を触っていきます。 1. 概要 1.1. Difyとは 1.2. Dify v0.8.0の新機能について 2. アプリ作成 2.1. この記事で実現すること 2.2. パラレル処理(並列処理)を用いてLLMを呼び出す 2.3. 各LLMからの回答を比較する 3. 実際にアプリを動かしてみる 4. まとめ 1. 概要 1.1. Difyとは Difyは、大規模言語モデル(LLM)を用いたオープンソースのアプリ開発プラットフォームです。 詳しくは、以下の記事で紹介されているので、参考にしてみてください。 acro-enginee

                                                      Dify v0.8.0でパラレル処理(並列処理)を活用したワークフローを作成する - Taste of Tech Topics
                                                    • [速報]Step Functionsで大量データの並列処理が可能に!Step Functions Distributed MapがGAされました!# reInvent | DevelopersIO

                                                      速報です! 本日の Werner Vogels キーノートで、Step Functionsで大規模な並列処理を可能にする、「Step Functions Distributed Map」が発表されました! これまで Step FunctionsにはもとよりMap並列処理を提供機能がありましたが、並列処理の同時実行数は最大40回という制限がありました。 Step Functions Distributed Mapで何ができるのか Mapは上記の制限により、数千件以上の項目を並列でタイムリーに処理することは困難でしたが、「Step Functions Distributed Map」により大規模な並列ワークロードの処理が可能になりました!! 「Step Functions Distributed Map」では、最大1万回の並列ワークロードを起動することができます。並列で実行できる処理には、St

                                                        [速報]Step Functionsで大量データの並列処理が可能に!Step Functions Distributed MapがGAされました!# reInvent | DevelopersIO
                                                      • Lambda×Go並列処理で100万回APIを呼び出す | フューチャー技術ブログ

                                                        はじめにこんにちは。TIG DXチームの後藤です。2021年7月に新卒でフューチャーに入社しました。 業務でAPIを通して数万~100万のデータのバッチ処理を行うLambdaの開発を行ったので、学びを共有したいと思います。 システム構成参画しているプロジェクトでCSVデータをデータベースに登録する必要がありLambdaの開発を行いました。ちなみに所属しているチームではGo言語を採用しているので、Go言語で開発を行いました。データを登録するためのAPI(API Gateway + proxy統合Lambda)を活用してバッチ処理を行います。データの件数は数百件から数十万件と幅が広く、「数十万件ものリクエストをLambdaの実行時間制限である15分以内に処理しきれるのか?」というところから開発を始めました。 ちなみに、1Web API呼び出しに大体30ms~80msほどかかります。 AWS L

                                                          Lambda×Go並列処理で100万回APIを呼び出す | フューチャー技術ブログ
                                                        • xargs -Pで安全に並列処理するシェルスクリプトの書き方 - Qiita

                                                          はじめに xargs コマンドの -P オプションを使用すると、指定したコマンドを並列で実行できます。この記事では次期 POSIX (POSIX.1-2024の次、10年後ぐらい)で標準化される予定の -P オプションを使った並列処理についての注意点をまとめます。 シェルスクリプトで簡単に並列処理を行う場合、xargs コマンドを使うのが簡単です。しかし xargs コマンド自体の使い方は難しいということは知っておいてください。(並列処理の話とは関係なく)find | xargs を使ったパターンをよく見かけますが(xargs と同等程度に速い)find -exec {} + を使ったパターンのほうが簡単です(遅い find -exec {} \; と混同しないように)。必要ない場合 xargs コマンドを使わないほうが良いというのは、この記事のもう一つのテーマです。 最も簡単な並列処理の

                                                            xargs -Pで安全に並列処理するシェルスクリプトの書き方 - Qiita
                                                          • MeCabの分かち書きを並列処理で高速化する

                                                            ただ、これだと並列化できないので、サイズが大きいテキストを処理すると結構時間がかかる。 試しに日本語Wikipedia(3.1GiB)でtimeコマンドを使って計測してみると以下のようになった。 time mecab -Owakati ./wiki.txt -o ./wiki-out.txt ________________________________________________________ Executed in 571.49 secs fish external usr time 537.57 secs 982.00 micros 537.57 secs sys time 29.01 secs 432.00 micros 29.01 secs 10分弱かかるのは結構辛いので、高速化したい。 世の中にあるMeCabの高速化についての記事は、複数ファイルに対して並列処理を行うこ

                                                              MeCabの分かち書きを並列処理で高速化する
                                                            • 【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 サブロウ丸
                                                              • Pythonで並列処理のすすめ

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

                                                                  Pythonで並列処理のすすめ
                                                                • Goにおける並列処理の常用パターン

                                                                  WEBのバックエンド開発でGo言語を採用する理由の一つに、並列処理が簡単に実装できる goroutine を使いたいというのがあるかと思います。 しかしひとえに goroutine といっても色んな書き方があり、どれを使うのが良い感じなの?落とし穴は?等は気になる所だと思います。 なので私見ではありますが、自分がよく使うパターンを残したいと思います。 パターン errgroup Goで何かしらの処理を書くときは適切なエラーハンドリングが切っても切り離せないと思いますので、それに特化した errgroup を使っています。 // サンプル準備 arr := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13} newArr := []int{} // 並列処理を開始 eg := errgroup.Group{} mutex := sync.Mute

                                                                    Goにおける並列処理の常用パターン
                                                                  • 【Pythonで高速化】I / Oバウンドとか並列処理とかマルチプロセスとかってなんぞや - Qiita

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

                                                                      【Pythonで高速化】I / Oバウンドとか並列処理とかマルチプロセスとかってなんぞや - Qiita
                                                                    • Pythonで並列処理するコードの雛形(進捗表示つき) - Qiita

                                                                      Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? import dataclasses import logging import random import sys import threading import time from concurrent.futures import ThreadPoolExecutor from typing import List # ログ設定 logger = logging.getLogger() logger.setLevel(logging.INFO) log_format = logging.Formatter("%(asctime)s

                                                                        Pythonで並列処理するコードの雛形(進捗表示つき) - Qiita
                                                                      • 生協食堂で会計してた女性、客が近づいてくる間に、レジスターも使わずに暗算で並列処理して、次々に客をさばいてた→特殊能力者に違いない

                                                                        はじめまして 平岡です @HiraokaYasushi 科学者(在野)。発言は私個人のものですが世界の中心です。芸風は、刹那的享楽主義楽観的構造学派。見える現象の背後にある、見えない真実を、見える形で表現する。理想とするサイエンスは、より単純にして、より多くのことを、より深く説明できること。 scholar.google.co.jp/citations?hl=j… はじめまして 平岡です @HiraokaYasushi 唐突な話題ですが、昔、豊中キャンパスの生協食堂で、1人で会計してた女性、特殊能力者と思います。客がトレイに料理を乗せて近づいてくる間に、レジスターも使わずに暗算で並列処理して、次々に客をさばいてた。あの人が居なくなった後、3台のレジスターと3人の人員で会計するようになった。 2024-11-18 18:59:15

                                                                          生協食堂で会計してた女性、客が近づいてくる間に、レジスターも使わずに暗算で並列処理して、次々に客をさばいてた→特殊能力者に違いない
                                                                        • 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

                                                                          • 仕事や研究で使える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
                                                                            • 並列処理をGo/Rust/Kotlin/Python/JSで解説!思想の違いを体感しよう (2023/08/08 19:00〜)

                                                                              お知らせ 運営会社の年末年始休業につき、2023年12月27日(金)13時以降のconnpass機能のお問い合わせにつきましては2024年1月6日(月)より順次ご案内させていただきます。あらかじめご了承ください。 お知らせ イベントページ内のフィードコメント投稿仕様を変更しました。今後、コメントの投稿は、イベントに参加登録(補欠・抽選を含む)しているユーザー、またはイベント開催関係者(管理者・発表者)のみ可能となります。参加登録をしていないユーザーで、イベントページに関する連絡や質問がある場合は、「イベントへのお問い合わせ」機能をご利用ください。 お知らせ 2024年9月1日より、connpassではスクレイピングを禁止し、利用規約に明記しました。以降の情報取得にはconnpass APIをご利用ください。APIご利用についてはヘルプページをご確認ください。 8月 8 並列処理をGo/Ru

                                                                                並列処理をGo/Rust/Kotlin/Python/JSで解説!思想の違いを体感しよう (2023/08/08 19:00〜)
                                                                              • プログラムの言語変換 & ローカル依存ファイルの集約を行うワークフロー(LangGraph・並列処理)

                                                                                上記のとおり、「parallel_document_massege」~ 「parallel_create_code」までが並列で処理されるノードです。ある程度ノードをまとめてしまってもよいですが、処理ごとに分けておくとノードの付け替えなどでカスタマイズがしやすいかと思います。 コーディング 使用したライブラリ コード内で使用した外部ライブラリとインストールコマンドは以下です。 $ pip install chardet==5.2.0 $ pip install aiofiles==23.2.1 $ pip install ipython==8.27.0 $ pip install langchain-core==0.3.28 $ pip install langchain-anthropic==0.3.0 $ pip install langgraph==0.2.60 import os

                                                                                  プログラムの言語変換 & ローカル依存ファイルの集約を行うワークフロー(LangGraph・並列処理)
                                                                                • シェルスクリプトで「パイプライン並列化」をガチでやってみた 〜 パイプ+並列処理でCPUの最大効率を引き出す知識 - Qiita

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

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