You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
門脇(@satoru_kadowaki)です。11月の「Python Monthly Topics」は、Python 3.12の新機能であるsub-interpretersについて紹介します。 2023年10月2日に「 Python 3.12.0 」がリリースされました。今回も気になる新機能が多く、本記事で紹介するsub-interpretersもPythonで並列処理を行うための新機能です。 Python 3.12の新機能については以下のリンクを参照してください。 What’s New In Python 3.12 -Python 3.12.0 Documentation 本記事ではPythonにおける並列実行のこれまでと、sub-interpretersが現状どのように使用できるかについて説明します。 なお、執筆にあたり先日開催されたPyCon APAC 2023において、sub-in
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
※本稿は,ビジネスデータサイエンス研究会開催の『ハイパフォーマンスPython 』勉強会【#3】における発表内容の一部を整理し記事化したものです。 内容 本稿では,オライリーから出ているハイパフォーマンスPythonの7章 Cにコンパイルする, 9章 multiprocessingモジュールの内容をもとに,CythonとCPUレベルでの並列処理に絞っていくつかのPython高速化手法を試してみた結果をまとめます。 まず前半では,実用性は皆無だけどとりあえず簡単なコードを題材にして比較を行います。 後半では記事を改めてもう少し実用性のあるコードの高速化を行います。 ソースコードはこちらにアップしております。 実行環境 作業環境(Dockerコンテナ) OS : Ubuntu 18.04.1 CPU数 : 4 メモリ容量 : 16GB ホストマシン OS : Windows10 Home Ed
PythonはGIL (グローバルインタプリタロック)というものがかかっており、基本的にただコードを書いただけでは複数のCPUコアがある場合にそのリソースを全て使い切ることが出来ません。 しかし、大量のデータを処理する時などにはマシンのCPUリソースを全て使って出来るだけ高速に計算させたい時がありますね。 Python 並列処理などのキーワードで検索すると標準ライブラリによるmultiprocessingモジュールの解説がよく見られるので、こちらを利用されている方も多いのではないでしょうか。 がっつり並列処理を組み込んだシステムを作る際にはこちらのモジュールを使って作り込みたいところですが、書き捨てのコードを書くだけの時には正直ちょっと面倒です… そこで、よりお手軽にサクっと並列処理を実行出来るJoblibというモジュールについて紹介したいと思います。 コード量が減るのはもちろんのこと、他
今回はPythonのjoblibパッケージを用いて手軽に並列処理を行う方法をご紹介したいと思います。 joblib 『Joblib』とは Joblibパッケージはデータの外部保存や並列処理・並行処理などを簡単に行うために用いるパッケージです。 現在市販されているPCのCUPはマルチコア・マルチスレッドを機能を持つものが一般的となっていますが、デフォルトのPythonではそのうちの1スレッドしか処理に用いられないので、大抵の場合リソースを持て余すことになります。 そこでJoblibを用いた並列処理です。 並列処理を行うことでCUPのリソースをフル活用し、同時に複数の処理を走らせることが出来る様にできます。 Joblibのイメージ joblibの処理の流れとしては『あるリスト』を『ある関数』に送り、最終的に「処理結果のリスト」を得るといった感じです。 イメージ 処理の内容によっては途中で早い・
Python でデータ分析をするときに、ほぼ必ずといって良いほど使われるパッケージとして pandas がある。 そのままでも便利な pandas だけど、代表的なオブジェクトの DataFrame, Series, Index には実は独自の拡張を加えることもできる。 これがなかなか面白いので、今回はその機能について紹介してみる。 ただし、あらかじめ断っておくと注意点もある。 独自の拡張を加えると、本来は存在しないメソッドやプロパティがオブジェクトに生えることになる。 そのため、便利だからといってこの機能を使いすぎると、コードの可読性が低下する恐れもある。 使うなら、後から別の人がコードを読むときにも困らないようにしたい。 具体的には、使用するにしても最小限に留めたり、あるいはパッケージ化やドキュメント化をしておくことが挙げられる。 今回使った環境は次の通り。 $ sw_vers Pro
この記事は、Brainpad Advent Calender 15日目の記事です。 本記事では、メモリに乗らないようなデータもPandasやNumPyライクに操作を行い、スケールアップ・スケールアウトにも対応できるライブラリ、Daskについて、簡単に紹介をします。 はじめに Pythonでデータ分析や機械学習をする際、PandasやNumPyを用いる場面が非常に多くなってきました。 しかし、PandasやNumPyではメモリに乗らないデータの扱いが難しかったり、基本的にシングルコアでの処理を行うため、速度が遅い、といった問題があります。例えば、サーバー上で実行する際、CPUの論理コアが32個あっても、1個のCPUしか使用していない、といった感じです。 近年、データ分析関連のライブラリは非常に多様化しており、派閥(?)が沢山あるようです。 個人的には、Pandas作者であるWes McKin
この記事はBASE Advent Calendar 2019の20日目の記事です。 devblog.thebase.in PAY株式会社でテックリードを務める東と申します。 主にバックエンド全般に広く携わっています。最近はサーバーアプリばかり書いていますがインフラもわりとやります。 当ブログの読者の方には弊社のことをご存じない方もたくさんいらっしゃるかと思いますので、簡単に社の紹介をさせていただきます。 PAY株式会社はBASE株式会社の100%子会社で、オンライン決済サービス「PAY.JP」とID決済サービス「PAY ID」などの決済サービスを開発・運営している会社です。 「支払いのすべてをシンプルに」をミッションに掲げ、お金を扱うすべての事業者・個人がもっと豊かな生活ができることを目指しています。 さて、決済というミッションクリティカルなテーマを扱うにあたって、品質保証は最も重要な課題
「JX通信社Advent Calendar 2019」10日目の記事です. 昨日は, @rychhrさんの「Pure WebSocketsをサポートしたAWS AppSyncでWebとiOS間のリアルタイムチャットを作ってみた(1)」でした. 改めまして, こんにちは. JX通信社でシニア・エンジニア&データ基盤エンジニアをしています, @shinyorke(しんよーく)と申します. JX通信社では, データ駆動での意思決定および施策実施をより円滑に進めるため, データ基盤の構築・運用を進めながらトライアル的に様々なFrameworkやツールの検証を行っています.*1 このエントリーでは, 私がシュッとPySparkで分散処理をする...前に, 手元で試したときの感想とその知見 のお話を残していきたいと思います. なお, 分散処理そのものの知見・ノウハウではなく, する前にPySparkに
Data Pre-Processing in Python: How I learned to love parallelized applies with Dask and Numba If you’re comfortable with using Pandas to transform data, create features, and perform cleaning, you can easily parallelize your workflow with Dask and Numba.In pure speed: Dask beats Python, Numba beats Dask, Numba+Dask beats ’em allInstead of using a Pandas apply, separate out numerical calculations in
例えば、ファイルを1行ずつ読んでその1行1行に対して何か重い処理(データベースへ登録、自然言語処理など)をする場合、マルチプロセスで並列処理を行うと早くなることがあります。 以下のようなサンプルプログラムを動かしてみました。 マルチプロセスの処理スクリプト multi_process.py #!/usr/bin/python # -*- coding: utf-8 -*- import sys import time from multiprocessing import Process def some_process(idx, num_process, lines): for line in lines[idx::num_process]: print "プロセス%d: %s行目を処理します" % (idx, line.strip()) time.sleep(1.0) # 重い処理風
Pythonの並列処理では標準ライブラリであるmultiprocessingがよく使われると思いますが、「もっと気楽に実装したい」という場合に便利なのがJoblibです。 github.com 今回はJoblibを使った並列処理プログラミングについて紹介します。 基本的な使い方 使い始める前に、pipでインストールしておきます。 $ pip install joblib 実験用に、実行に3秒程度かかる関数heavy_square_taskを定義します。引数を2乗した値を返します。 from time import sleep import timeit def heavy_square_task(x): sleep(3) return x**2 以下のようにこの関数を4回実行すると、12秒かかります。直列処理のため、純粋に3秒×4タスクとなっています。 [heavy_square_task
はじめに Scrapyで作ったプロジェクトに複数のSpiderを実装し、一回の実行コマンドで複数のSpiderを同時に動かすための方法を調べてみました! この記事では以下の3パターンの実行方法について解説しています。 パターン1 : 複数のSpiderを並列に実行 パターン2 : 複数のSpiderを順番に実行 パターン3 : パターン1とパターン2の組み合わせ 実施環境 # Mac OS $ sw_vers ProductName: Mac OS X ProductVersion: 10.14.2 BuildVersion: 18C54 $ python3 --version Python 3.7.0 # Scrapyのバージョン Scrapy==1.5.1 解説 動作を確認するために、簡単なScrapyプロジェクトを作成してみました。 githubへアップロードしているので、確認してみ
複数の Python バージョンでテストを実行するツールに tox があります。 tox と pytest で Python 2/3 両対応のテストを実行する - forest book tox ツールそのものがとても便利なのですが、この tox テストを並列実行してくれるツールがリリースされました。 detox: Python Package Index 既に tox を使っている環境であれば、detox をインストールするだけで良いです。 $ pip install detox 使い方は tox と全く同じで特別な設定は不要です。tox コマンドを実行する代わりに detox コマンドを実行します。試しに実行してみましょう。 (test)$ detox py26 create: /Users/t2y/work/repo/littlehttpserver/.tox/py26 GLOB s
最近仕事で自然言語処理を使ったモデルを作成していたんですが、 前処理やモデルを作る際に数分〜数十分単位の処理待ちの空き時間が頻繁に発生してしまい、 その度集中力が切れる問題に悩まされていました。 モデルの学習に時間がかかってしまうのはまた別の解決策を考えるとして、 今回は時間のかかる前処理をDaskをつかって高速化した方法をお話ししようと思います。 この記事は PyLadies Advent Calendar 2018 - Adventar の18日目の記事になります。 Daskとは? Daskとは、numpyやpandasなどのデータを簡単に並列計算するライブラリ。 あまり公式のチュートリアルがわかりやすくない(気がする)ので、基本的な使い方は Python Dask で 並列 DataFrame 処理 - StatsFragments を見てみると良い。 サンプルデータ 今回はKagg
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く