並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 206件

新着順 人気順

concurrentの検索結果41 - 80 件 / 206件

  • 排他制御を行う GitHub Action を作った

    弊社では GitHub のレポジトリ管理に Terraform GitHub provider を使用しています。 いちいち手元で terraform plan や terraform apply を叩くのは面倒なので、 GitHub Actions を利用することを考えました。 tf ファイルと現実のリソースとの不整合を避けるために、 これらのコマンドは排他的に実行する必要があります。 例えば terraform apply を実行している最中に terraform plan を実行することはできません。 ここで問題になってくるのが GitHub Actions のジョブ並列数です。 2020-12-30 現在、GitHub Actions は同時に 20 並列まで実行可能ですが、逆に並列数を制限できないという贅沢な悩みがあります。 一応 Matrix Build の並列数を制限するオプ

    • ペペロンチーノで学ぶ非同期プログラミングによる並行処理 - Qiita

      非同期プログラミングについて、イメージだけを超速で掴むための記事を書きました。非同期プログラミングが全くわからない人、具体的には、「async await ってなに……?」「for 文で実行していくのと何が違うの……?」レベルの人を想定しています。 非同期プログラングって何? 同期的じゃないプログラミングです。同期的ということは、プログラムが上から下に順々に実行されるということです。つまり、普通のプログラムはだいたい同期的です。言い換えれば、非同期プログラミングは順番が入れ替わる(可能性)のあるプログラムです。なぜそんなことをするかについては後述します。 ペペロンチーノを作りたい あなたはペペロンチーノを作りたいとします。以下のタスクが必要です。 パスタを茹でる(5 分) ニンニクを切る(1 分) ソースを作る(4 分)、ただしニンニクを切っている必要がある 盛り付けをする(0 分)、ただ

        ペペロンチーノで学ぶ非同期プログラミングによる並行処理 - Qiita
      • Pythonのthreadingとmultiprocessingを完全理解 - Qiita

        現代の主なOSと言ったら、Mac OS,UNIX,Linux,Windowsなどがあります。これらのOSは「マルチタスク」機能をサポートしています。 マルチタスクとは?と思うかもしれませんが、例えばブラウザーを立ち上げて、音楽聴きながら、Wordでレポートを書くというシチュエーションでは、少なくとも3つのタスクが同時進行しています。そして、表のタスク以外に、裏ではOS関連の様々なタスクがこっそり動いています。 マルチコアのCPUで、マルチタスクが処理できるのは理解しやすいですが、シングルコアのCPUでもマルチタスクが可能です。OSはそれぞれのタスクを交替に実行しています。例えば、タスク1を0.01秒、タスク2を0.01秒、タスク3を0.01秒、タスク1を0.01秒......繰り返して実行していきます。CPUは速いので、ほぼ同時進行のように感じます。この交替実行のことをしばしば「並行処理(

          Pythonのthreadingとmultiprocessingを完全理解 - Qiita
        • PEP 703 - 兼雑記

          https://peps.python.org/pep-0703/ Python の GIL 外す話。これすごく楽しい読みものでした。参照カウントのところが一番人気だと思うのですが、他のところも色々良い。こういう、「んーこういうことするとこういう問題が起きない?」と思ったら次の章くらいでそれが説明される、みたいな読みものは大変好きです 参照カウント: オブジェクトっていうのは作ったスレッドが解放するというのがほとんどなんだから、その場合はロックをいらなくする、他に渡ったら普通の参照カウントぽくする、という話。 Swift に 2018 年に導入された 話らしい。他のスレッドに渡された後で DECREF すると他スレッド用の参照カウントが負になりうるのだけど、その時に queue に入れるということをして、ややこしいので、なんかこれ無しですむ方法はないのかなぁ……と Immortalize

            PEP 703 - 兼雑記
          • OpenCVの新しい顔検出をブラウザでも試してみる

            この記事はOpenCV Advent Calendar 2021の 23 日目の記事です。 はじめに 3 日目の記事で紹介されているように、OpenCV 4.5.4 では新しく顔検出/顔認識の API が実装されました。この記事ではこの顔検出 API をブラウザから呼んでみることにします。ブラウザから呼び出すにあたって、先にきちんとパフォーマンスを確認して使用する解像度を決めます。更に高速化のために SIMD とマルチスレッドを使った OpenCV の Wasm バイナリを作ります。その後、実用的な環境を想定して React のフロントエンドから呼び出すようにしてみます。ついでに WebRTC で実際に加工した画像が送信できることのデモまで行います。 OpenCV.js での新機能の扱い OpenCV.js で JavaScript から呼び出せる機能はホワイトリスト形式になっており、ビル

              OpenCVの新しい顔検出をブラウザでも試してみる
            • 君たちの「並行」の理解は間違ってる

              TL;DR 並行計算の理解を間違ってる人が多いので正したい 並行計算=同時に実行すること 並列計算≒同等のタスクを並行計算すること もうちょっとちゃんと書いたフォローアップ記事も合わせて、お時間が許すようであればお読みください。 状況 並列と並行 / 多言語からみるマルチコアの活かし方に見られるように並行(concurrent)とは「複数の処理を順番に実行すること」とする誤った記述を、この記事に限らずチラホラ目にします。 大事になことなので繰り返しますが、間違った記述を含んでいるのはこの記事だけに限りません。 そのような誤った記述を見かけるたびに「ああこの人も間違ってるのか」と諦観を抱くだけというのもあまりに非生産的なので、間違ってますよとポインタとして示せるように簡単な読み物にしたものがこの記事です。 事実 計算=computingの分野においては並行=concurrentと並列=par

                君たちの「並行」の理解は間違ってる
              • 並行プログラミング入門

                複数のプログラムを同時に実行する「並行プログラミング」は、処理速度を飛躍的に向上させる手法で、タスク管理、プロセス管理、スレッド管理をはじめ、複雑な仕組みについての幅広い知識とテクニックが必要となります。本書はRustとアセンブリ、そして一部Cを用い、CPUのアトミック命令、グリーンスレッド、アクターモデル、π計算、ソフトウェア・トランザクショナルメモリ、async/awaitなど、並行プログラミングに関する理論的な背景から実装までをカバー。さらに、アセンブリ実装の理解を深めるため、AArch64とx86-64アーキテクチャの説明も付録として収録。一歩一歩、着実に理解できるように、その仕組みから順を追って詳しく説明します。GitHub上で公開されているソースコードを実際に動かしながら、並行プログラミングの知識と理解を深めることができます。 関連ファイル サンプルコード 正誤表 ここで紹介す

                  並行プログラミング入門
                • Kubernetes CronJobと仲良くなりたい | メルカリエンジニアリング

                  この記事は、Merpay Tech Openness Month 2020 の17日目の記事です。 こんにちは。メルペイのSREの駒崎(@komattaka)です。 暑かったり台風だったりと大変な日々が続いていますが、ご自愛ください。 目次 対象読者 得られるもの 説明しないこと はじめに CronJobの仕組 そもそもCronJobとは何か パラメータの解説 CronJobが作成される流れ メルペイでは何に困っていた? suspend: trueにしていたCronJobがfalseにした後もJobを生成しない (GKE特有) NodeがCluster Autoscalerによって停止されると、そのNodeで稼働していたJob(Pod)のEvictをCronJobが正常終了したと誤解しconcurrencyPolicy: Forbid(Replace)なのに並列稼働した ユースケース別に設

                    Kubernetes CronJobと仲良くなりたい | メルカリエンジニアリング
                  • たった数行でpandasを高速化する2つのライブラリ(pandarallel/swifter) - フリーランチ食べたい

                    pandas はデータ解析やデータ加工に非常に便利なPythonライブラリですが、並列化されている処理とされていない処理があり、注意が必要です。例えば pd.Sereis.__add__ のようなAPI(つまり df['a'] + df['b'] のような処理です)は処理が numpy に移譲されているためPythonのGILの影響を受けずに並列化されますが、 padas.DataFrame.apply などのメソッドはPythonのみで実装されているので並列化されません。 処理によってはそこがボトルネックになるケースもあります。今回は「ほぼimportするだけ」で pandas の並列化されていない処理を並列化し高速化できる2つのライブラリを紹介します。同時に2つのライブラリのベンチマークをしてみて性能を確かめました。 pandarallel pandaralell はPythonの m

                      たった数行でpandasを高速化する2つのライブラリ(pandarallel/swifter) - フリーランチ食べたい
                    • C言語向けコルーチン非同期 I/O ライブラリ neco を使ってみた。

                      はじめに C言語でコルーチンを扱う方法は色々ありますが、専用の命令を専用の記述方法で実装しなければならなかったりなど、あまりとっつきやすいものではありませんでした。 今日 X/Twitter のタイムラインで見付けた neco はまさにそんな悩みを解消できる物でした。 neco とは neco はコルーチンを使った非同期 I/O ライブラリです。 コルーチン: 開始、スリープ、一時停止、再開、移譲、および結合。 同期: チャネル、ジェネレータ、ミューテックス、条件変数、および待機グループ。 デッドラインとキャンセルのサポート。 ファイルディスクリプタを使った Posix フレンドリーなインターフェース。 ネットワーク、シグナル、ランダムデータ、ストリーム、およびバッファ付き I/O の追加 API。 公正かつ決定論的なスケジューラを備えた軽量ランタイム。 高速なユーザースペースのコンテキス

                        C言語向けコルーチン非同期 I/O ライブラリ neco を使ってみた。
                      • Goとマルチコアスケール実装

                        マルチコア化の未来予測 半世紀前にSF映画「2001年宇宙の旅」に登場するコンピューターHAL-9000が並列コンピューティングの未来を示しました。マルチコアで構成されたコンピューターの物理コアを取り除いてもすぐにクラッシュせずに性能ダウンして処理が継続するという演出がありました。 当時ですらシングルコアコンピューティングの限界が予想されていて、現状のコンピューティングがマルチコア化しているという未来をしっかり予測できていたことがわかります。 演出はコア数に応じてコンピューティング性能がスケールしていることを表現しています。これはマルチコアスケールするソフトウェア実装の未来を示していたと思います。 シングルコア性能向上の頭打ち 2003年以降あたりはCPUの動作周波数が伸び悩み出したところ。 https://queue.acm.org/detail.cfm?id=2181798 より その

                          Goとマルチコアスケール実装
                        • 時間がかかる複数のCLIタスクをRust製ツールのPueueで管理する

                          rsyncによる大容量ファイルの転送やDBのバックアップ・リストアなど、たびたび非常に時間がかかるタスクをCLIで実行するシーンがあります。 通常そういった場合は末尾に&を付加(セッションが切れても中断されないようにnohupとセットで使うことも多い)してバックグラウンドで動作させるのが一般的かと思います。 ただ、そのまま使うとログや実行時間、リターンコードなどの採取が面倒であり、いささか一覧性に欠けます。 そんな中、そのようなユースケースに適したPueueという管理ツールが登場しました。 Pueueとは Pueueとは、長時間のCLIタスクに特化したOSSの管理ツールです。 最近はstarshipやnushellといったRust製のツールが勢いを増していますが、例によってPueueもRustによって記述されています。 Pueueの特徴としては、次の通りです。 リッチなUI: バックグラウ

                            時間がかかる複数のCLIタスクをRust製ツールのPueueで管理する
                          • JDK 21 の開発者向けの新機能 - 赤帽エンジニアブログ

                            Red Hat のソリューションアーキテクトの瀬戸です。 この記事はRed Hat Developerのブログ記事、What's new for developers in JDK 21 | Red Hat Developer を、許可をうけて翻訳したものです。 Java開発者にとってエキサイティングな情報として、今年 9 月 19 日に JDK 21 がリリースされました。 このリリースには、仮想スレッド(Virtual Thread)、レコードパターン(Record Patterns)、順序付コレクション(Sequenced Collections)など、Javaのエコシステムに利益をもたらす多くの新機能が含まれています。JDK 21 のプレビューには、文字列テンプレート(String Templates)、スコープ付値(Scoped Values)、構造化並列処理(Structure

                              JDK 21 の開発者向けの新機能 - 赤帽エンジニアブログ
                            • Google製GNU gold以上の速さを実現 超高速リンカ「mold」を支えるテクニック

                              Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。rui314氏は、制作中のリンカである「mold」について発表しました。全2回。後半は「mold」速さと、その高速化を実現するテクニックについて話しました。前半はこちら。 リンカが速いと何がうれしいのか 植山類氏(以下、植山):リンカが速くなって何がうれしいのか。普通にうれしいです。プログラムを書いているとうれしいことがわかると思いますが、makeを実行すると、普通は自分が直前に変更したファイルしかビルドしないので、デバッグをしていると1つのファイルを編集してビルドすることになります。 コンパイラは1つだけのファイルをコンパイルするのはそこそこ速いですが、リンカは基本的には実行ファイルを丸ごと作ります。全体の入力を一気に受け取って出力するため、差分コンパイルであっても

                                Google製GNU gold以上の速さを実現 超高速リンカ「mold」を支えるテクニック
                              • GitHub Actionsで連続pushした時に止めるアレ

                                大分時間が経ってしまいましたが、2022/8/31 に開催された stand.fm 主催の TECH STAND #9 GitHub イベントに参加しました。 その際に呟いたやつが今回の記事の内容です 有り難いことに直ぐにフォロー頂きました。 あまり纏まった記事が見当たらなかったので、自分用のメモとしてまとめます。 他のCIにはあったアレ GitHub Actionsを利用する前は、TravisCIやCircleCIを利用していました。 移行してから随分使ってないので、記憶が定かではないのですが という機能が標準であった気がします。 この機能の名前は何と呼ぶのでしょうか?地味だけれども、ないと困るアレですw GitHub Actionsのリリース直後にこちらの機能と [ci skip] が使えずに後発なサービスなのにーと不満を覚えていました。 その後にアレの機能を実装したカスタムアクション

                                  GitHub Actionsで連続pushした時に止めるアレ
                                • Concurrency in modern programming languages: Rust vs Go vs Java vs Node.js vs Deno vs .NET 6

                                  This is part of my "Concurrency in Modern Programming Languages" series Concurrency in modern programming languages: IntroductionConcurrency in modern programming languages: RustConcurrency in modern programming languages: GolangConcurrency in modern programming languages: JavaScript on NodeJSConcurrency in modern programming languages: TypeScript on DenoConcurrency in modern programming languages

                                    Concurrency in modern programming languages: Rust vs Go vs Java vs Node.js vs Deno vs .NET 6
                                  • Rustのasync/awaitとスケジューラの話 / rust-async-await

                                    Effectで作る堅牢でスケーラブルなAPIゲートウェイ / Robust and Scalable API Gateway Built on Effect

                                      Rustのasync/awaitとスケジューラの話 / rust-async-await
                                    • Python multiprocessing vs threading vs asyncio - JX通信社エンジニアブログ

                                      エンジニアの鈴木(泰)です。 今回は、multiprocessingとthreadingとasyncioの違いとはなんだろう?という問に挑戦してみたいと思います。 この問の答えをグーグル先生に聞いてみると、非常にたくさんの情報がヒットします。しかしながら、どの情報も断片的なものばかりで(本記事もそうなのかもしれません)、色々と本を読んだりネットを漁ったりして、情報を補完しなければなりませんでした。 本記事は、僕が調べた限りの情報を集約し、この問に対する結論を1つの記事にまとめたものとなっています。 前提 マルチプロセスとは マルチスレッドとは Pythonにおけるマルチスレッド 本題 マルチプロセス(multiprocessingライブラリ)を利用したほうが良い場合 cpu_sec.py cpu_multiprocessing.py cpu_threading.py cpu_asyncio

                                        Python multiprocessing vs threading vs asyncio - JX通信社エンジニアブログ
                                      • [Cloud OnAir] Cloud Run Deep Dive ~ GCP で実践するモダンなサーバーレス アプリケーション開発 ~ 2019年9月12日 放送

                                        [Cloud OnAir] Cloud Run Deep Dive ~ GCP で実践するモダンなサーバーレス アプリケーション開発 ~ 2019年9月12日 放送

                                          [Cloud OnAir] Cloud Run Deep Dive ~ GCP で実践するモダンなサーバーレス アプリケーション開発 ~ 2019年9月12日 放送
                                        • 過去のブーム(並列プログラム)の現状を考える

                                          みんな割と未来の予言はよくするが、あんまりその結果を振り返らんよなぁ。 現在のディープラーニングのブームをどう捉えるか、というか、 プログラマのキャリアという点でどう接していくか、を考えるにあたり、 過去のブームを考えてみるのは良いんじゃないか、という気がした。 最近並列GCや並行GCの章を読んでいて、 一昔前の大きなブームとしてはParallel computingがあったなぁ、と思い出した。 ということでこの事について、専門にしてなかった部外者プログラマの目にどう映ったかを記しておきたい。 なお、「XXXだと言われていた」はあんまりソースとかを確認したりはしてません。 なんとなく自分はそう聞いていた気がしたしそう思ってた、程度のものです。 かつて思っていたことと当時の状況 Parallel computingはだいたい10年くらい前の時点ではその後の大きなトレンドとして明らかに存在して

                                          • Pythonの非同期処理の基礎とOpenAI APIへ並列リクエストする実践例

                                            こんにちは、commmuneでデータサイエンティストをしているひぐです。 人間が苦手なマルチタスクをLLMに任せたら、効果的に処理してくれるのではないか?というモチベーションのもと、Pythonの非同期処理を使って並列かつストリーミングでChatGPTの回答を出力するアプリを作りました🤖 例えば下記は、ある課題を入力すると、深さ・広さ・構造・時間軸という異なる観点で解像度を上げてくれるアプリケーションです。 アプリに関する登壇資料↓ このアプリ作成にあたってPythonの非同期処理を勉強したところ、最初は多くの専門用語(コルーチン、イベントループ...)や独自の記法により、全体像をつかむのに苦戦しました。一方で、学んでみると予想以上にシンプルな記法で実装できること、そして応用範囲が広くて便利だと理解しました。 この記事では、そんな少し取っつきにくけど便利なPythonの非同期処理にフォー

                                              Pythonの非同期処理の基礎とOpenAI APIへ並列リクエストする実践例
                                            • Rustの std::sync::RwLock はLinuxでwriter starvation問題を起こす (macOSなら平気)

                                              まとめ: std::sync::RwLock::{write(), try_read()} を併用した場合には「書き込みロックを最優先」という挙動は必ずしも期待できない (LinuxではNG) Pthread の規約が挙動に自由度をもたせており、Linuxにおけるデフォルト実装では writer starvation が発生する Rustにおいて writer starvation を回避しつつ readers-writer lock を使うには parking_lot::RwLock を使うと良い 目次 背景: Readers-writer lock とは? 背景: Rustにおける readers-writer lock 背景: RwLock::write() と RwLock::try_read() 再現コード 原因分析 修正: parking_lot::RwLock を使う おわり

                                                Rustの std::sync::RwLock はLinuxでwriter starvation問題を起こす (macOSなら平気)
                                              • 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が明らかに
                                                • Rust Atomics and Locks by Mara Bos

                                                  About this Book The Rust programming language is extremely well suited for concurrency, and its ecosystem has many libraries that include lots of concurrent data structures, locks, and more. But implementing those structures correctly can be difficult. Even in the most well-used libraries, memory ordering bugs are not uncommon. In this practical book, Mara Bos, team lead of the Rust library team,

                                                    Rust Atomics and Locks by Mara Bos
                                                  • Go1.14のcontextは何が変わるのか - Qiita

                                                    背景 Go1.14 で context パッケージが少し改善されるのは mattn さんの twitter を見て知った方も多いのではないでしょうか。このツイートされた時期と同じくらいにちょうど社内の勉強会で context パッケージをみんなで読んでおり、皆完全に context を理解したので ある程度実装も把握していました。勉強会では GoDoc と最新 master ブランチのコードが結構違うね、みたいな話もありました。ということで、個人的にとても興味深いツイートでした。Go.1.14のリリースノートには記載されていないのがミソです(2020/02/23現在)。 Go 1.4 のリリースノートにまだ含まれてないけど context の WithCancel と WithTimeout の伝搬がこのコミットで速くなってる。https://t.co/gJiT81uVyj — mattn

                                                      Go1.14のcontextは何が変わるのか - Qiita
                                                    • Rustで高速に大量のHTTPリクエストを投げる - Qiita

                                                      自己紹介 趣味でRustをやっている Twitter https://twitter.com/hatookov Github https://github.com/hatoo SoundCloud https://soundcloud.com/gfyxxqjngkze ネットワーク初心者なので誤りがあるかも知れません モチベーション oha HTTPロードジェネレータ Apache Bench(ab)みたいな tui-rsでリアルタイム表示 とにかくいっぱいリクエストを投げたい! ベンチマーク環境 WSL 2 Ryzen 3950x 今回はtokio https://github.com/hatoo/rust_http_benchmarks ベンチマーク雛形 ベンチマーク系のライブラリは複数回実行してしまい、時間がかかるのでやめた ざっくりと時間がわかればいいかな 簡単のためにサーバーはw

                                                        Rustで高速に大量のHTTPリクエストを投げる - Qiita
                                                      • Optimize long tasks  |  Articles  |  web.dev

                                                        Optimize long tasks Stay organized with collections Save and categorize content based on your preferences. Commonly available advice for making your JavaScript apps faster often includes "Don't block the main thread" and "Break up your long tasks." This page breaks down what that advice means, and why optimizing tasks in JavaScript is important. What is a task? A task is any discrete piece of work

                                                          Optimize long tasks  |  Articles  |  web.dev
                                                        • PNG Parser Differential

                                                          This PNG image renders differently in Apple vs non-Apple decoders: If you're using Apple-flavoured software, you should see "HELLO APPLE", and on all other software, you should see "HELLO WORLD". I found this while writing my own multi-threaded PNG decoder. While pondering my design, I realised that I had an exploitable implementation bug. After learning that Apple has their own implementation of

                                                          • 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その1「背景: クロック周波数の停滞とコア数の増加」 - Qiita

                                                            大学の授業で講義資料を作ったので,Qiitaにも展開しておきます. 背景: クロック周波数の停滞とコア数の増加 コンピュータはクロック周波数に同期して計算をします.おおむね1秒間にクロック周波数の数で示されるだけの数の機械語命令を実行できると考えると良いです.たとえばクロック周波数が1GHzであれば,1GHz=1,000MHz=1,000,000(百万)kHz=1,000,000,000(10億)Hzですので,1秒間に1,000,000,000(10億)個の機械語命令を実行できるというような感じです.もちろんこれは概算です. いわゆるヘネパタ本(J. L. Hennessy & D. A. Patterson: Computer Architecture: A Quantitative Approach, 6th edition. Morgan Kaufmann, 2017; 邦訳 中條・

                                                              並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その1「背景: クロック周波数の停滞とコア数の増加」 - Qiita
                                                            • Choose the Right Python Concurrency API - Super Fast Python

                                                              How to Choose the Right Python Concurrency API Python standard library offers 3 concurrency APIs. How do you know which API to use in your project? In this tutorial, you will discover a helpful step-by-step procedure and helpful questions to guide you to the most appropriate concurrency API. After reading this guide, you will also know how to choose the right Python concurrency API for current and

                                                                Choose the Right Python Concurrency API - Super Fast Python
                                                              • マルチコアのCPUを使い切って圧縮を速くする - それマグで!

                                                                gzip の限界 = CPU 1コア マルチコア・マルチスレッドのCPUがあるのに、gzip や lzma(xz)や bzipといったメジャーな圧縮は、CPUを1コアで処理するんですね。 CPU使用率を見てみたら、CPU利用率は100%を超えないんですね。 HDD・SSDの書き込み速度に限界があるからそれでも良かったんだろうが。いまはメモリが一般的に64GBもある時代です。うちのマシンでもメモリが12GBもあるのに3GB程度の圧縮に、5分とか耐えられません。もうちょっと速くしたい。 cpu利用率が100%で頭打ちになる。gzip gzipを使ってると、CPU利用率が100%で止まるんですよね。lzma などの他の圧縮でも同じ。 gzip/ gunzip をマルチで処理する pigz / unpigz Pigz のマニュアルには次のように書いてある。スレッドを使って並列処理をするっぽい。 P

                                                                  マルチコアのCPUを使い切って圧縮を速くする - それマグで!
                                                                • Rust Advent Calendar 2019 1日目 Rust の非同期プログラミングモデルはランタイム観点だと Go のそれに似ている - keno_ssの日記

                                                                  この記事は Rust Advent Calendar 2019 の1日目の記事になります. 明日は topecongiro さんの予定です. TL;DR 去る 11/07 に Rust 1.39.0 がリリースされました. これはユーザー待望の async/await 構文が言語機能として取り込まれた安定版リリースとなります. Advent Calendar 最初の記事としては取り上げないわけにはいきません. もう既に他の良い記事がたくさん書かれていますが, この記事ではそれらを補完する視点から説明してみようと思います. Rust と非同期 IO の歴史 κeenのHappy Hacκing Blog -- async/awaitと合成可能性 async/await の実装と利便性のバランスの良さについて. κeenのHappy Hacκing Blog -- RustのFutureとその

                                                                    Rust Advent Calendar 2019 1日目 Rust の非同期プログラミングモデルはランタイム観点だと Go のそれに似ている - keno_ssの日記
                                                                  • 「Rust Atomics and Locks」を読んだ

                                                                    「Rust Atomics and Locks」を読んだ #2023-02-05 発売前からすごく楽しみにしていた本で、発売日に買って年末から一生懸命読んでいた。 今なら以下から無料で読める。 https://marabos.nl/atomics/ 内容としては求めるものが分かりやすく書かれており、すでに2023 年に読んで良かった本の1つに入りそう。 目次書籍を通して得たかった知識 #例えば以下のようなコードを書いた際に、println!でどのような数値のペアが表示されるのか。結論から書くと0 0,10 20といった値がまずは思い浮かぶと思うが、0 20というペアで表示される可能性もあるとされており、その際以下のような疑問・不明点があった。 0 20と表示になるのはどのような条件で何が起こった場合なのか強いメモリモデルとされるx86でも0 20というペアは発生するのか本ケースにおいてx8

                                                                      「Rust Atomics and Locks」を読んだ
                                                                    • 並列処理と排他処理 - ROBOT PAYMENT TECH-BLOG

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

                                                                        並列処理と排他処理 - ROBOT PAYMENT TECH-BLOG
                                                                      • Virtual Thread導入の背景 - Javaのマルチスレッドの歴史を振り返る

                                                                        このエントリーは Java Advent Calendar の9日目のエントリーです。 qiita.com Virtual ThraedはJava 19でPreview (JEP 425)、Java 20でSecond Preview (JEP 436)となり、うまくいけば次のLTSであるJava 21で導入予定です。 パフォーマンスを考える時に、一般的にはスループットと応答性の2つがあります。スループットは単位時間あたりにどのくらいリクエストをさばけるか、応答性は処理のリクエストから結果が帰るまでの時間です。Virtual Threadのこの2者のうち、スループットを向上させるために導入されます。 では、なぜ今になってVirtual Threadが導入されるのかということを、歴史を振り返りながら考えてみるのがこのエントリーです。 いにしえの時代 - Java 1.0からJ2SE 1.4

                                                                        • research!rsc: Coroutines for Go

                                                                          This post is about why we need a coroutine package for Go, and what it would look like. But first, what are coroutines? Every programmer today is familiar with function calls (subroutines): F calls G, which stops F and runs G. G does its work, potentially calling and waiting for other functions, and eventually returns. When G returns, G is gone and F continues running. In this pattern, only one fu

                                                                          • Swift Concurrency チートシート

                                                                            Swift 5.5 で Swift に Concurrency (並行処理)関連の言語機能が追加されました。これによって、 Swift で非同期処理・並行処理のコードをより簡潔かつ安全に書くことができるようになります。 しかし、 Swift Concurrency は Structured Concurrency や Actor など、多くの人にとって馴染みが薄いだろうと思われる概念を含みます。具体例を通して効率よく Swift Concurrency を習得できるように、本記事では iOS アプリを題材に、 Swift Concurrency 導入以前( Before )と導入後( After )のコードを比較することで、何がどのように変わるのかを紹介します。 なお、 Swift Concurrency 関連の機能は次の三つに大別できるため、本記事の Before & After の例も

                                                                              Swift Concurrency チートシート
                                                                            • 2019 年の非同期 Rust の動向調査 - Qiita

                                                                              この記事は 2018 年の非同期 Rust の動向調査 の続報です。 TL;DR Rust 1.39.0 以降で async/await 構文が使えるようになりました Future を実行するためのランタイムはいままで tokio だけでしたが、別に async-std というのができました async/await を使うライブラリを選ぶときはこの2つのランタイムのどちらで動くのかを確認しましょう。 特に理由がなければ tokio を使うのがいいでしょう。 2018 年からの差分 一年前から非同期 Rust を追いかけている人向けの情報です。 組織の再編 昨年は async/await を stabilize させるための async-foundations とツールチェーンを調査する web-foundations というグループが発足しました。 しかし諸事情により Async Foun

                                                                                2019 年の非同期 Rust の動向調査 - Qiita
                                                                              • RNNからTransformerまでの歴史を辿る ~DNNを使ったNLPを浅く広く勉強~ - arutema47's blog

                                                                                Amazon Prime 一ヶ月無料 Seq2seqからBERTまでのNLPモデルの歴史をざっとまとめる。 DNNは知ってるけどTransformerってなんだかわからない、って人におすすめです。 Abst. 画像認識にもTransformerが使われることが多く、DeepRLやGPT-3といったNLPモデルも身近になってきています。"Attention is 何?"と言えなくなってきたので勉強しました。 Feedforward NetworksからSeq2Seq, Attention機構からTransformer登場、そしてBERT GPTといった最新モデルまでの流れを広く浅く記述する予定。 またKaggle NLPコンペの上位解法から利用例を探る。 Tl;DR TransformerはSelf-Attentionという機構でデータ内の時系列的特徴を抽出でき、従来のRNNを始めとするNN

                                                                                  RNNからTransformerまでの歴史を辿る ~DNNを使ったNLPを浅く広く勉強~ - arutema47's blog
                                                                                • PythonのマルチスレッドWSGIサーバーの選定 - methaneのブログ

                                                                                  今までuWSGIをシングルスレッド、マルチプロセスで使っていたのだけれども、昔に比べて外部のAPI呼び出しが増えているのでマルチスレッド化を検討している。 uWSGI uWSGIでマルチスレッドを有効にした時は、各workerスレッドがacceptする形で動作する。スレッド数以上の接続をacceptすることがないので安心。 プロセス内のスレッド間ではmutexで排他されて、同時にacceptを実行するのは1スレッドのみに制限されている。つまりthendering herd問題はプロセス間でしか起こらない。マルチスレッド化でプロセス数はむしろCPUコア数まで減らせるので、thendering herd問題はむしろ今よりも軽減できる。(ちなみにプロセス間でもロックしてthendering herdを許さないオプションもあるけど、プロセス間同期は怖いので使っていなかった。) ただしuWSGIのマ

                                                                                    PythonのマルチスレッドWSGIサーバーの選定 - methaneのブログ