並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 62件

新着順 人気順

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

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

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

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

      この記事ですることを3行で Pythonの標準ライブラリでできる並列実行を、あらためて総当たりで速度比較しよう ウォーターフォールチャートで、それぞれの並列処理の処理時間の特徴を可視化しよう boto3の実行をモデルケースにして、どの並列処理が一番早いのかを調べよう この記事の結論を先に Python 3.12から本格的に使えるようになったサブインタープリターは、CPUで実行する処理について言えば、従来のサブプロセスよりも高速 boto3の実行は、サブインタープリターよりも署名付きURLの非同期実行のほうが速い → S3からの10ファイルの取得であれば、実行時間を90%削減できます → Bedrockの3回実行であれば、実行時間を60%削減できます 今回使ったソースコードはこちらに置いています。 お手持ちの環境で再実行できるようにしていますので、気になる方はぜひ。 どうしてこの記事を書くの

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

        実は最大並列数の制限がなければジョブ(標準入力からの一行単位のデータ)の数だけバックグラウンドプロセスを起動すればいいのでかなり簡単に実装できます。ですが普通は嫌ですよね?ということで最大並列数を制限する処理を入れています。また通常の利用で必要になりそうな CTRL-C と TERM シグナルへの対応もしています。 #!/bin/sh set -eu [ "${ZSH_VERSION:-}" ] && setopt shwordsplit MAX_PROC=4 # 最大並列数 # INT(CTRL-C)、TERM による終了処理 terminate() { trap '' TERM kill -TERM 0 exit "$1" } trap "terminate 130" INT trap "terminate 143" TERM # trap : CONT # 並列で実行される処理 fu

          POSIX準拠シェルスクリプトでマルチコアの能力を活用する並列処理の実装(最大並列数あり、GNU Parallel, xargsなし) - Qiita
        • 【Kubernetes】1週間かかる処理を1.5時間で終わらせた【並列処理】 - ニートの言葉

          こんにちはあんどう(@t_andou)です。 今回はKubernetesを使って並列処理させた記録です。 まだ「とりあえずそれっぽく動くまで試してみた」という段階で、kubernetesを理解できてはいないので自分用のメモを公開しているという認識でご覧ください。 間違っている部分や、よりスマートなやり方がありましたらご指摘いただけると幸いです。 この記事の概要 機械学習に使う特徴量の作成で1週間かかりそうな処理を10分くらいで終わらせられないかと考え、GKE(=GoogleのKubernetes環境)を使い試行錯誤した記録です。 今回は一部失敗して完了時間が1.5時間になったものの、設定を上手く出来れば15分程度で終わる見込みです。 対象読者 ・Kubernetesの概要は知っているくらいのレベルの人 ・KubernetesのJobを使った並列処理をしたい人 目次 この記事の概要 対象読者

            【Kubernetes】1週間かかる処理を1.5時間で終わらせた【並列処理】 - ニートの言葉
          • 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が明らかに
            • 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倍高速化してみた
                      • RayによるPython分散並列処理入門 - Qiita

                        Rayとは RayはPythonにおける分散並列処理を高速かつシンプルに書けるフレームワークで, 既存のコードを並列化することも容易な設計となっています. Rayを使うことでmultiprocessingなどに比べ簡単にプロセスレベルの並列処理を記述することができます. 本記事はRayチュートリアルの内容をもとにしており, コードはPython 3.8.2, Ray 0.8.4での動作を確認しています. インストール ターミナルでpipなどからインストールできます. 使い方 基本的な用途としては覚える文法はray.init ray.remote ray.get の3つのみで, この記事では加えてray.wait ray.put も紹介します. Rayによる並列化の基本 実行に3秒かかる関数 func が二度呼び出され全体の実行に6秒かかる以下のコードについて, func の実行を並列化する

                          RayによるPython分散並列処理入門 - Qiita
                        • PythonからDataprocを操作してシームレスに並列処理を実現する - astamuse Lab

                          初めまして。2019年6月にAstamuseにjoinした rinoguchi です。 ついに昨日、日本でも緊急事態宣言が出ましたね。小学校の休校も1ヶ月程度延長されましたし、会社もリモートワークにほぼ移行してますし、ここできっちりウイルスの拡散を防ぎたいところです。 ちなみに、妻がドイツに単身赴任中なのですが、ドイツでは感染者は多くて外出自粛モードになっているものの、現地の人たちはせっかくだからと日曜大工したり、庭を改造したりとそれなりに楽しんでいるみたいです。私たちも制限された環境の中ですが、せっかくなので楽しみたいですね! 屋根瓦. なんとなく並列処理を連想しませんか? はじめに それはそうと、私は当社で、特許データなどの名寄せ(同一人物に対してユニークなIDをふる作業)を担当しております。 特許の名寄せには、人物名・組織名・出願日・共同出願人など様々な特徴を利用するのですが、中国人

                            PythonからDataprocを操作してシームレスに並列処理を実現する - astamuse Lab
                          • PostgreSQL 12β1が公開。Bツリーインデックス周りの性能向上や、インデックスの並列処理による再構成が可能に

                            オープンソースのデータベースであるPostgreSQLの次バージョンとなる「PostgreSQL 12」のベータ版が公開されました。このベータ版にはPostgreSQL 12最終版で予定されているすべての機能が搭載され、試せるようになっています。 PostgreSQL 12の主要な改善点を、ブログから一部引用します。 まずPostgreSQL 12では、インデックス周りの性能向上やサイズ削減などが行われているとのこと。 PostgreSQL 12 improves the overall performance of the standard B-tree indexes with improvements to the space management of these indexes as well. These improvements also provide a reductio

                              PostgreSQL 12β1が公開。Bツリーインデックス周りの性能向上や、インデックスの並列処理による再構成が可能に
                            • 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倍速」到達、型の記述、スレッドセーフな並列処理など新機能
                              • Pythonで並列処理をするなら知っておくべきGILをできる限り詳しく調べてみた - Qiita

                                最近Pythonでオーケストレーション層(BFF)のアプリケーションを書く機会がありました。 Python3.4からはasyncioが導入され、I/Oバウンドな処理はシングルスレッドでも効率的に捌けるようになったものの、依然としてCPUバウンドな処理はGILが存在することで、シングルプロセス下では並列処理が制限されます。 このことから言語特性として、CPUバウンドよりもI/Oバウンドな処理を複数捌くことに適していると見ることができます。言語選択の意思決定をする際に重要なファクターとなりますが、そのためにはGILの仕組みを改めて知る必要があると思い、調べてみました。 GIL(グローバルインタプリタロック)とは そもそもGILとは何のことでしょうか。 正式にはGlobal Interpreter Lock(グローバルインタプリタロック)といい、PythonやRuby等の言語に見られる排他ロック

                                  Pythonで並列処理をするなら知っておくべきGILをできる限り詳しく調べてみた - Qiita
                                • Rails で大量のレコードを並列処理する - ボクココ

                                  ども、@kimihom です。 今回、大量のレコードを一つずつ処理する実装をしたので、その実装方法をまとめておく。 コードの大枠 以下は全ユーザー(User)に紐づいているレコード(Record) に対して処理をするコードとなっている。 User.all.order("id").each do |u| r_all = u.records r_all.find_in_batches do |records| Parallel.each(records, in_threads: 50) do |r| begin # 処理 ActiveRecord::Base.connection_pool.with_connection do # ActiveRecord を使った処理 end rescue => e puts "err #{e}" end end end r_all = nil end fi

                                    Rails で大量のレコードを並列処理する - ボクココ
                                  • 新機能 – Step Functions が動的並列処理をサポート | Amazon Web Services

                                    Amazon Web Services ブログ 新機能 – Step Functions が動的並列処理をサポート マイクロサービスを使用すると、アプリケーションのスケーリングが容易になり、開発が高速になりますが、分散アプリケーションのコンポーネントを調整するのは大変な作業になりかねません。 AWS Step Functions は、各ステップが前のステップの出力を入力として受け取るステップで構成されるワークフローを設計および実行できるようにすることで、タスクの調整を容易にする完全マネージド型サービスです。たとえば、Novartis Institute for Biomedical Research は、Step Functions を使用して、クラスターの専門家に頼らずに科学者が画像分析を実行できるようにしています。 Step Functions は最近、コールバックパターンなどの非常に

                                      新機能 – Step Functions が動的並列処理をサポート | Amazon Web Services
                                    • 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並列処理など新機能
                                      • [Step Functions]動的並列処理(Map)を使って60分×24時間=1440ファイルのバッチ処理を楽々実装してみた | DevelopersIO

                                        [Step Functions]動的並列処理(Map)を使って60分×24時間=1440ファイルのバッチ処理を楽々実装してみた こんにちは、平野です。 下記のブログで紹介されているように、 Step Functionsにて、配列の入力を個別のLambda等にバラまいて処理させるMapステートがサポートされました!! [アップデート]Step Functionsで動的並列処理がサポートされました! 担当していた案件で、S3上にある直近24時間分ファイル群(各ファイル名に秒までの時刻が入っている)を、 1分毎にまとめて別のバケットに移すような処理があり、 これはまさにMapステートに最適な素材でしたので、Mapステートを使ったリファクタリングをしてみました! この記事では、ServerlessFrameworkのStep Functionsプラグインを用いています。 (対応早くて助かる!!)

                                          [Step Functions]動的並列処理(Map)を使って60分×24時間=1440ファイルのバッチ処理を楽々実装してみた | DevelopersIO
                                        • PHP における並列処理と非同期処理入門

                                          - PHP Conference Japan 2019 - English Title: An introduction of pararells processing and asynchronously processing on PHP

                                            PHP における並列処理と非同期処理入門
                                          • 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」とは?並列処理に最適なワケ
                                                  • 並行処理と並列処理|Goでの並行処理を徹底解剖!

                                                      並行処理と並列処理|Goでの並行処理を徹底解剖!
                                                    • 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で並列処理を試みる|グロービス・デジタル・プラットフォーム
                                                      • 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 を使ったら並列処理が速くなった
                                                        • その並列処理待った! 「Python 並列処理」でググったあなたに捧ぐasync, threading, multiprocessingのざっくりとした説明 - Qiita

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

                                                            その並列処理待った! 「Python 並列処理」でググったあなたに捧ぐasync, threading, multiprocessingのざっくりとした説明 - Qiita
                                                          • 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 - プログラミング初心者のための入門ブログ
                                                            • guzzleで並列処理とリトライをやろうとして折れた話 - BASEプロダクトチームブログ

                                                              この記事はBASE Advent Calendar 2019の9日目の記事です。 devblog.thebase.in はじめまして。BASE株式会社のtatsuと申します。 最近、業務にて guzzle を使う機会がありました。結論から述べますと guzzle のみで実現することは出来ず Amazon sqs を併用するという形で落ち着いたのですが、いくつか知見を得ることも出来たのでその事について書きたいと思います。 主に guzzle/Pool と guzzle/RetryMiddleware の話になります。 最初の壁:ResponseがどのRequestの結果なのか分からん まず並列処理を実装しました。実際のものとは違いますが流れは一緒。 $urls = [ 'https://example_base.in/1', 'https://example_base.in/2', ]; $

                                                                guzzleで並列処理とリトライをやろうとして折れた話 - BASEプロダクトチームブログ
                                                              • 並列処理入門 + Rubyでの新しい並列実行単位Ractor - Qiita

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

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

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

                                                                    Goルーチンとチャネルを使用した並行・並列処理 具体的なコードをよく起こるトラブルとともに紹介
                                                                  • [速報]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
                                                                    • [アップデート]Step Functionsで動的並列処理がサポートされました! | DevelopersIO

                                                                      Step Functionsにアップデートがあり、動的並列処理がサポートされました!これにより、前段のステート等で動的に生成した配列に対して、繰り返し処理、おまけに並列処理を行う事が可能になりました。早速試してみたいと思います。 Step Functionsにアップデートがあり、動的並列処理がサポートされました! AWS Step Functions adds support for dynamic parallelism in workflows これにより、前段のステート等で動的に生成した配列に対して、繰り返し処理、おまけに並列処理を行う事が可能になりました。 早速試してみたいと思います。 やってみるための準備 ステートマシンから呼び出す、シンプルなLambda関数を作成します。 ここでは、CloudWatch Logsに存在するロググループを取得して、 取得したロググループそれぞれに

                                                                        [アップデート]Step Functionsで動的並列処理がサポートされました! | DevelopersIO
                                                                      • Rubyで並列処理を行うparallel gemの使い方と勘所 -- ぺけみさお

                                                                        parallelを使うとKenrel#forkやThreadを駆使するのと比べて簡単に並列処理を書くことができます。parallelは拙作のBestGems.orgによると、合計ダウンロード数で151位、デイリーダウンロード数は100位前後で、現時点で非常にメジャーなGemとなっています。 この記事ではparallelの基本的な使い方と、実際に使ってみて感じた注意点をTipsとして整理したいと思います。 parallelはREADME.mdが親切に書かれています。 加えて主要な部分は500行程度の小さなGemです。 利用する場合は公式のドキュメントとソースコードを確認されることをおすすめします。 前提ソフトウェア ソフトウェア バージョン 備考 ruby 2.5.1 - parallel 1.12.1 - rails 5.0 - 使い方 インストール gem install paralle

                                                                        • 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の分かち書きを並列処理で高速化する
                                                                          • 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を呼び出す | フューチャー技術ブログ
                                                                            • 並列処理でActiveRecordの処理時間を短縮する - patorashのブログ

                                                                              ここ最近は並列化による処理速度アップを色々試しています。 Railsプロジェクトのデータに少々不備があることに気づいたので、それを修正するために該当データを抽出しようと思って雑にループを回したら、データ量が多いせいか、全然終了しませんでした。業を煮やした私は、これも並列化してしまおう!と思って並列化の情報を集めることに。 Rubyでの並列処理は、parallelというgemを使うと並列処理がすごく簡単にできました。 github.com parallelのいいところ parallelのいいところは、 並列処理したい対象の配列データを渡すだけでいい map, each, any?, all? などに対応している マルチプロセス、マルチスレッドの両方に対応している というところでしょうか。 簡単な使い方の例 Parallelに対して、配列を渡したら、自動的にCPUの数だけプロセスをフォークして

                                                                                並列処理でActiveRecordの処理時間を短縮する - patorashのブログ
                                                                              • モデル予測制御を並列処理する高速アルゴリズム 京都大学が開発

                                                                                京都大学は2019年9月11日、同大学情報学研究科博士後期課程に在籍するトウ(漢字は「登る」にこざと編)昊洋氏と、同大学情報学研究科の教授である大塚敏之氏が、実時間最適制御(モデル予測制御)を並列計算によって高速実行するアルゴリズムを開発したと発表した。マルチコアプロセッサの性能を最大限活用でき、安価なプロセッサを複数使用することでモデル予測制御の実装コスト削減も期待できる。 最適制御問題とは、制約条件下で最適な動きを求める問題で、温度制御や制動制御(アンチロックブレーキシステム)、ロケット着陸など、さまざまな制御に応用できる。中でもモデル予測制御は、刻々と変化する状況に応じて最適制御問題を実時間で解き直しながら制御する手法で、現在最も使われている先端の制御方法だ。例えば、自動車の自動運転や電力系統の安定化、化学反応の効率化、人工膵臓(すいぞう)などに利用されている。

                                                                                  モデル予測制御を並列処理する高速アルゴリズム 京都大学が開発
                                                                                • 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における並列処理の常用パターン