タグ

Pythonに関するHHRのブックマーク (75)

  • macOS 12.3 MontereyでPython 2.7が削除されるのに伴い、AlfredやPopClip、xbar(BitBar)でPythonを利用したプラグインが動かなくなっているので注意を。

    macOS 12.3 MontereyでPython 2.7が削除されるのに伴い、AlfredやPopClip、xbar(BitBar)でPythonを利用したプラグインが動かなくなっているので注意を。
    HHR
    HHR 2022/02/06
  • 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 で大量のファイルを並列で速く読み込む - Qiita
    HHR
    HHR 2021/11/24
    GIL。コメントが本体感ある。pandasはcの実行なのでGILを開放する
  • Pythonで並列処理をするなら知っておくべきGILをできる限り詳しく調べてみた - Qiita

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

    Pythonで並列処理をするなら知っておくべきGILをできる限り詳しく調べてみた - Qiita
    HHR
    HHR 2021/11/09
    GILの歴史。マルチスレッド、マルチプロセス、asyncio
  • 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通信社エンジニアブログ
    HHR
    HHR 2021/11/09
    multiprocessing threading asyncio比較。条件毎の比較が参考になる。
  • Python: REPL に複数行をペーストしたときの挙動が変わって困った件について - CUBE SUGAR CONTAINER

    表題のとおりなんだけど、最近 Python の REPL に複数行のコードをペーストしたときの挙動が以前と変わってしまい困っていた。 その Python というのは、具体的には Homebrew でインストールしたものや、Pyenv を使ってソースコードからビルドしたもの。 使っている環境は次のとおり。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.15.7 BuildVersion: 19H114 $ brew info readline | head -n 1 readline: stable 8.1 (bottled) [keg-only] $ pyenv --version pyenv 1.2.22 もくじ もくじ TL;DR 問題についてもうちょっと詳しく TL;DR 結論から先に述べると、これは Python のビルドに使

    Python: REPL に複数行をペーストしたときの挙動が変わって困った件について - CUBE SUGAR CONTAINER
    HHR
    HHR 2021/09/02
    set enable-bracketed-paste off
  • Pythonのアンダースコア( _ )を使いこなそう!

    Pythonは一番書きやすいプログラミング言語と知られ、多くの人の第二外国語(英語に次ぎ)です。でもGithubGitlabで他人のコードを参照した時や自分でclassを書いてる時、こういう疑問はあったでしょうか: 「def __init__(self): の__init__のアンダースコアは何故二つなのか?」 「def _func(x): と def func(x): とdef func_(x): に違いはあるのか?」 「y, _ = func(x)のアンダースコアは何か?」 そんな色んな所で使われてるアンダースコアの使い方を、今回整理して説明してみました! アンダースコアの使い場所Return値を無視する。関数の名付けで使い方を区別する。数字を読みやすくする。インタプリタで最後に表示された値を代表する。以上4種類の状況でアンダースコアを使いこなす事により、読みやすいpythonicな

    Pythonのアンダースコア( _ )を使いこなそう!
    HHR
    HHR 2021/08/11
    “関数からのreturn値が複数あって使わない部分があったらアンダースコアを使ってreturn値のメモリの占用をしないまま廃棄ができます” まじか。知らなかった。
  • Apache Beam (Dataflow) 実践入門【Python】 - Qiita

    はじめに この記事は、Apache Beam Documentation の内容をベースとしています。 Apache Beam Python SDK でバッチ処理が可能なプログラムを実装し、Cloud Dataflow で実行する手順や方法をまとめています。また、Apache Beam の基概念、テストや設計などについても少し触れています。 Apache Beam SDK 入門 Apache Beam SDK は、Java, Python, Go の中から選択することができ、以下のような分散処理の仕組みを単純化する機能を提供しています。 **Pipeline:**処理タスク全体(パイプライン)をカプセル化します。処理タスクには、入力データの読み取り、変換処理、および出力データの書き込み等が含まれます。 **PCollection:**分散処理対象のデータセットを表すオブジェクトです。通常

    Apache Beam (Dataflow) 実践入門【Python】 - Qiita
  • Pythonは_(アンダースコア)の使い方を理解するだけでプロフェッショナルになれる - Qiita

    自己紹介 普段私は、 一番得意な機械学習(深層学習)をしたり、 Python/Django でWebアプリを開発したり、 TypeScript/Vue or Reactフロントエンドの開発をしたり、 PHP/Laravel でWebアプリを開発したり、 さまざまなことを行っています。 趣味で休みの日にGo言語で色々作成しているのですが、型のある世界は素敵だなと昨今感じています。 今最もやりたいことは、Goで大規模なWebアプリケーションを作成したい。 企業案件やご連絡等ございましたらお気軽に下記よりご連絡いただければと思います。 nagamatsu-k@dym.jp 第3次AIブームの到来 米Google DeepMindが開発した人工知能AI)の囲碁プログラム「AlphaGo」が世界トップレベルの実力を持つ韓国のプロ棋士、李世ドル(イ・セドル)九段に4勝1敗と大きく勝ち越したことが

    Pythonは_(アンダースコア)の使い方を理解するだけでプロフェッショナルになれる - Qiita
    HHR
    HHR 2021/07/21
  • python3のbytes型とstr型の比較と変換方法

    3では文字列はunicode文字列として扱われるようになったので、すべてpython2でいうところのu''になりました。u''表記してもエラーにはなりませんが(python3.3以上)同じ意味です。 バイナリデータを扱うときには、bytes型に変換します。bytes型は文字列っぽく扱えますが、strとbytesの連結などはできないので用途に合わせて適切な型で持つようにします。 例えば特定の文字コードの文字列を持ちたい場合はbytes型になります。str文字列として加工などをして最終的に出力する際に、任意の文字コードのバイト列としてエンコードして出力するという使い方になります。 strからbytes encodeでbytes型(utf-8)に変換します。 >>> 'あいう'.encode('utf-8') b'\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86' #ut

    python3のbytes型とstr型の比較と変換方法
  • Pythonで省メモリに大量の文字列を扱う工夫 - MNTSQ Techブログ

    たくさんの文字列(や離散的な符号列)をメモリに載せないといけないんだけど、いろんな制約があって通常のList[str]では載らない…ということありませんか?(まぁあんまりなさそうですね) たまたまそういうことがあったので、その際に検討した内容をまとめておきます TL;DR メモリをもっと増やしましょう 富豪的に解決できるならいつでもそれが最高です しかし、世の中それでなんとかならんこともたくさんあります 用途があうのであれば専用のデータ構造を採用する 例えばもし共通のprefixやsuffixが存在し、順序に興味がなければtrie treeなどが使えます 例えば、弊社であれば、法人名をメモリに持ちたいなんてときもあります。そういうときに法人名の辞書をtrieで持ったりすることがあります 「株式会社」「一般財団法人」や「銀行」といった共通語がたくさんでてくるのでtrie treeでごりごり削

    Pythonで省メモリに大量の文字列を扱う工夫 - MNTSQ Techブログ
  • 『Pythonデータサイエンスハンドブック』は良書(NumPy, pandasほか) | note.nkmk.me

    このは良い。原著のKindle版を持っているのに買ってしまった。 注意点と良い点を紹介する。 目次・内容 注意点 / こんな人にはオススメできない 英語版はオンラインで無料公開されている Pythonの基礎には触れられていない 良い点 / こんな人にオススメしたい NumPyの説明が(比較的)詳しい 新しいバージョンのpandasに対応 Matplotlibの説明が詳しく、サンプルが豊富 機械学習のアルゴリズムへの理解が深まる 類書との比較 『科学技術計算のためのPython入門』 『Pythonによるデータ分析入門』 まとめ 目次・内容 正式な書名は『Pythonデータサイエンスハンドブック ――Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析機械学習』。 サブタイトルにある、Jupyter(IPython)、NumPy、pa

    『Pythonデータサイエンスハンドブック』は良書(NumPy, pandasほか) | note.nkmk.me
  • 意外と奥が深い、HDFの世界(Python・h5py入門) - Qiita

    ChainerやKeras、PandasやDask、Vaex関係などでちらほら見かけるHDF5(.h5とか.hdf5とかの拡張子のやつです)。 知識が無く以前は単なるバイナリフォーマットなのかと思っていましたが、しっかり勉強したら色々機能があって面白かったので、復習も兼ねてまとめておきます。 そもそもHDF5って? Hierarchical Data Formatの略(5はバージョン)で、名前の通り階層化された形でデータを保存することができるファイル形式です。 ある種フォルダやファイルシステムに感覚が近く、1つのファイル内に整理しつつ様々な複数ファイルを保存できます。 HDF5のここが凄い とりあえず機能に色々触れだすと長くなるので、先にHDF5の、個人的に良さそうに感じた点を書いておきます。 読み書きがCSVなどより大分速い いくつか記事を見ていた感じ、パフォーマンスはpickleよりも

    意外と奥が深い、HDFの世界(Python・h5py入門) - Qiita
  • Python標準実装より速い!?Oracleが作ったGraalPythonをJython・CPythonとベンチマークしてみた!! - Qiita

    GraalVM・GraalPythonとは GraalVMは2018年4月27日にOracleから公開された仮想マシンです. GraalVM is a universal virtual machine for running applications written in JavaScript, Python, Ruby, R, JVM-based languages like Java, Scala, Clojure, Kotlin, and LLVM-based languages such as C and C++. GraalVMJavaScript,Python,Ruby,R,JavaScala,Clojure,KotlinのようなJVMベースの言語,CやC++のようなLLVMベースの言語で書かれたアプリケーションを動かすための仮想マシンです. ちょっと何を言ってるかわから

    Python標準実装より速い!?Oracleが作ったGraalPythonをJython・CPythonとベンチマークしてみた!! - Qiita
  • Anaconda パッケージリポジトリが「大規模な」組織では有償となっていた - Qiita

    2024年3月末にライセンスが全面的に改訂されました。 以前とは異なり、教育機関はカリキュラムベースのコースの使用のみに限定される場合には免除されるという条件が明記されました(Educational Entities will be exempt from the paid license requirement, provided that the use of the Anaconda Offering(s) is solely limited to being used for a curriculum-based course.)。 つまり、教育機関で研究目的の利用時は200人以上の組織であれば有償ということがはっきりしたことになります。 以前も「教育活動に関連して使用する場合(use by a student or employee of an educational insti

    Anaconda パッケージリポジトリが「大規模な」組織では有償となっていた - Qiita
    HHR
    HHR 2021/02/09
    2021/02/09時点ではMiniconda + conda forgeで大丈夫だが、油断ならない。
  • Python: オブジェクトを漬物 (Pickle) にする - CUBE SUGAR CONTAINER

    Python の標準ライブラリにある pickle モジュールは Python のオブジェクトを直列化・非直列化するための機能を提供している。 直列化 (Serialize) というのはプログラミング言語においてオブジェクトをバイト列などの表現に変換することを指す。 非直列化 (Deserialize) はその逆で、バイト列を元にオブジェクトを復元することだ。 バイト列などに変換されたデータはファイルなどの形で永続化できる。 最近の典型的な用途でいえば、機械学習で学習済みのモデルを保存して取り回すためなんかに使われる。 ところで、モジュール名でもある pickle という単語は、複数形にすると pickles つまりハンバーガーなどにはさまっているピクルスになる。 きっとメモリ上にある揮発性で賞味期限の短いオブジェクトを、バイト列などの形でファイルなどに長期保存できる状態にすることをピクル

    Python: オブジェクトを漬物 (Pickle) にする - CUBE SUGAR CONTAINER
    HHR
    HHR 2021/01/18
    プロトコルには複数のバージョンが存在。Python 2.7で使用できるプロトコルバージョンは2まで。Python3.5と2.7の両方で扱うことのできるpickleを作るにはプロトコルのバージョンを 2 以下に指定しなければいけない
  • 【Python】site-packagesのパスを確認する方法【pip install・pyenv】 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    【Python】site-packagesのパスを確認する方法【pip install・pyenv】 - Qiita
    HHR
    HHR 2021/01/14
    python -c "import site; print (site.getsitepackages())"
  • Python でパッケージを開発して配布する標準的な方法 - Qiita

    (この記事の情報は古いです。最近は pip が myproject.toml を理解できるようになりました。Python でパッケージを開発して配布する標準的な方法 2023 年編 に更新版を書きましたので参考にしてください。) 今更ながら Python でパッケージを開発したり配布する標準の方法を知らなかったので調べました。Poetry の方が簡単ですが、人の作ったプロジェクト仕事するのに覚えておくと便利です。 仮想環境の作成 Python 3.7.7 等の最新の Python が入っていて python コマンドで実行出来るようになっている状態から始めます。これからパッケージを開発するために、他の Python プログラムと利用ライブラリが混ざらないように最初に仮想環境を作ります。仮想環境を作る標準の方法は venv モジュール https://docs.python.org/ja/

    Python でパッケージを開発して配布する標準的な方法 - Qiita
    HHR
    HHR 2021/01/13
    venvで仮想環境の作成から。この記事ではsetup.cfgでなくsetup.pyに直書きしている点に注意。
  • Python Wheels

    Python Wheels What are wheels? Wheels are the new standard of Python distribution and are intended to replace eggs. Support is offered in pip >= 1.4 and setuptools >= 0.8. Advantages of wheels Faster installation for pure Python and native C extension packages. Avoids arbitrary code execution for installation. (Avoids setup.py) Installation of a C extension does not require a compiler on Linux, Wi

    HHR
    HHR 2021/01/13
    wheelのサポート状況。ブクマ時点でansible, thriftは駄目
  • 深入りしないCython入門 - Qiita

    Cythonとは? Pythonは処理速度は決して早くない、むしろ遅い部類である。 そこで、C/C++に変換することにより高速化しようというのがCythonである。 低級言語のC/C++(昔は高級言語だったが、現在は低級言語といって良いだろう)に変換してネイティブコンパイルするのだから、速いに決まっている。 この記事の目的 「Cythonは難しい」、**「CythonはC/C++の知識が必要」という印象があるだろう。答えは「Yes」**である。 しかし、その答えはCythonをフルに使いこなす事が前提である。 実はCythonは、C/C++をそんなに知らなくても、ちょっとした高速化には充分な恩恵を得られるように設計されているのだ。 しかし、無闇にCythonを使っても「あまり高速化されない」、「移行がすごく大変」と散々な結果になるだろう。そこら辺のポイントを踏まえ、C/C++をあまり知らな

    深入りしないCython入門 - Qiita
    HHR
    HHR 2020/12/25
  • Pythonの並列処理・並行処理をしっかり調べてみた - Qiita

    「ビルトインモジュールが色々あってぜんぜん分からない。俺達は雰囲気で並列処理を使っている」という状態だったので、良くないと思ってPythonの並列処理と並行処理をしっかり調べてみました。 少し長めです。細かいところまで把握するためのもので、仕事などの都合でさくっと調べて使いたい方は別の記事をご確認ください。 使った環境 Python 3.6.1 :: Anaconda 4.4.0 (64-bit) Ubuntu Jupyter notebook(一部マジックコマンドなども利用しています) ※Windowsの場合、マルチプロセスなどで直接Jupyter上で動いてくれない(.pyファイルを経由すると動く)などのケースがあります。 参考 : Jupyter notebook never finishes processing using multiprocessing (Python 3) 並行

    Pythonの並列処理・並行処理をしっかり調べてみた - Qiita
    HHR
    HHR 2020/09/21
    concurrent.futureかな。共有メモリは諦め推奨かな。もしも必要になったらおとなしくJavaとかの他言語に移したほうが良さそう。