タグ

pythonとプログラミング言語に関するsh19910711のブックマーク (10)

  • 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
    sh19910711
    sh19910711 2022/09/19
    2019 / "CPythonのGILの仕組みはバージョン3.2によって変更 / サブインタプリタはPEP 554で提案 / CPythonはRuntimeでステートを持っているため、インタプリタでステートを保持するためには依然多くの問題を抱えているようです"
  • 『「コルーチン」とは何だったのか?』の裏話的な何か、とPythonコルーチン - bonotakeの日記

    いきなりですが、n月刊ラムダノートが創刊されました。めでたい。 www.lambdanote.com で、この中にある @mametter さん執筆の記事『「コルーチン」とは何だったのか?』に僕はがっつり関わっていました。 後述しますが、僕と彼とのオンラインでのやり取りの中で記事が書き始められ、方針が決まっていった感じです。 なので、出版を記念してそのへんの経緯を振り返り、また僕なりの感想をまとめようかと思います。 ……と思ったんですが、改めてやりとりのログを見返してたんですがアホほど膨大な量になっていて、とても全部振り返るのは無理だと悟りました。 なのでざっくりと。 当該の記事と一緒に読まれることを想定していますので、その記事で語られていることの説明はある程度省いています。 数時間前に @mametter さんが草稿を公開↓したので、そちらを読んでくれても構いません(できれば買ってほしい

    『「コルーチン」とは何だったのか?』の裏話的な何か、とPythonコルーチン - bonotakeの日記
    sh19910711
    sh19910711 2022/03/30
    ""Revisiting Coroutines", 2004: コルーチンについて非常によくまとまっているサーベイ論文 / 2000年代までのコルーチンがどういうものだったか、きちんと知りたければこの論文を読むのが良い"
  • pythonのastモジュールに不満がでたらlib2to3のコードを使ってみよう - podhmo's diary

    はじめに pythonのコードをparseするためにastモジュールが用意されていたりする。 このモジュールはpythonのコードをparseしてvisitor的なものでastをtravarseしてなどと便利ではあるのだけれど。 コメントなどの情報が消えてしまうなどの不満が出ることがある。 このような時にlib2to3用のコードを使ってみると良いのではないかという話。 lib2to3? 2to3というツールがあったりする。これはpython2.x用のコードをpython3.x用のコードに変換してくれるツール。 よく考えてみて欲しいのだけれど、2to3によってコメントの情報が失われることはない。そして2to3もおおよそASTを取り出してからの変換ということになっているはず。ということは2to3の内部のコードを覗いてみればコメントなどの情報を失うことなくAST変換を行う術が分かるはず。 何が言

    pythonのastモジュールに不満がでたらlib2to3のコードを使ってみよう - podhmo's diary
    sh19910711
    sh19910711 2022/01/09
    2017 / "2to3の内部のコードを覗いてみればコメントなどの情報を失うことなくAST変換を行う術が分かるはず / ちなみに完全にフルでparserを再実装したbaronというものもあったり / 抽象度の高いredbaronから使う事がおすすめ"
  • Python 3.8 では空dictが小さくなる - Qiita

    Python 3.7 では {} で作った空 dict よりも、 dict.clear() で作った空 dict の方が省メモリでした。 >>> import sys >>> d = {} >>> sys.getsizeof(d) 240 >>> d.clear() >>> sys.getsizeof(d) 72 これは dict オブジェクトを新規作成するときに最小サイズのハッシュテーブルを確保し初期化するのに対して、 dict.clear() は shared key dict の仕組みを使って空 dict 専用の共有テーブル(書き込み禁止)を利用しているからです。 空の dict の数は無視できないくらいにはあるので、Python 3.8 で新規に dict オブジェクトを作るときも dict.clear() の結果と同じ共有領域を使うようにしました。 なお Python 3.7 の

    Python 3.8 では空dictが小さくなる - Qiita
  • ((Pythonで) 書く (Lisp) インタプリタ)

    Peter Norvig / 青木靖 訳 このページには2つの目的がある。コンピュータ言語の実装について一般的な記述をすることと、Lispの方言であるSchemeのサブセットをPythonで実装する具体的な方法を示すことである。私はこのインタプリタをLispy (lis.py)と呼ぶ。何年か前に私はJavaとCommon LispでSchemeインタプリタを書く方法を示した。今回の目標は、アラン・ケイが「ソフトウェアのマクスウェル方程式」と呼んだところの簡潔さと取っつきやすさを可能な限り実現するということだ。 SchemeのサブセットLispy の構文と意味論 コンピュータ言語の多くは様々な構文的な決まり(キーワード、中置演算子、カッコ、演算子優先順、ドット記法、セミコロンなど)を持っているが、Lisp族言語の1つとして、Schemeの構文はすべてカッコ付きの前置記法であるリストを基とし

  • Python処理系入門 〜1 + 1 で学ぶ処理系解読の基礎〜 - yigarashiのブログ

    この記事は CAMPHOR- Advent Calendar 2018 4日目の記事です. 1. はじめに プログラミング言語 Python は汎用の動的型付き言語で,機械学習や Web 開発を中心に幅広く使われています.特にここ数年の Python 人気は凄まじいものがあり,某大学生協の屋では,プログラミング系の平積みコーナーが一面Python 関連書籍で埋め尽くされています.所属しているコミュニティの関係でプログラミング初心者の学生にもよく会うのですが,第一言語が Python という方が非常に多く,まさにも杓子も Python といった状況です. そんなわけで,人々がこぞって Python でプログラムを書いているわけですが,「Python 自体がプログラムである」という事実に目を向けたことのある人は非常に少ないと思います.みなさんが Python のプログラムを書いて実行する時

    Python処理系入門 〜1 + 1 で学ぶ処理系解読の基礎〜 - yigarashiのブログ
    sh19910711
    sh19910711 2020/12/06
    "自分が調べたい振る舞いを含んだなるべく小さな Python コードを書き,それを dis モジュールで逆アセンブル / ceval.c を開いてバイトコード命令の名前で検索"
  • JVM上で動くPython処理系実装のススメ

    2. お前誰よ ❖ yotchang4s (よっちゃん) ➢ 澁谷 典明 (Yoshiaki Shibutani) https://twitter.com/yotcang4s ❖ Python歴 ➢ 6ヵ月くらいの初心者 ❖ 所属 ➢ 株式会社エフ・コード ギョームでScala書いてますフゥー

    JVM上で動くPython処理系実装のススメ
  • Lispインタプリタを作った - 日常と進捗

    とうとうApple MusicPerfumeが追加されたので、ここ数日はワンルーム・ディスコを聞きながらコーディングをしている。 Perfume、良い。良すぎる。幸せになれる。 そう、幸せといえばLisp。 1週間労働を耐え抜いてまた週末にのんびりLispを書ける。 安定感がすごい。 そんな感じで週末Lisperとして今日もLispに向き合っていたのだけれど、そういえば前にLispでCのコンパイラを書く個人プロジェクトを立ち上げたものの完全に放置していたのを思い出した。 で、久しぶりに取り組もうと書きかけのコードを見ていたのだが、なんかグッとこない。 どうも自分のコードにときめかない... ということで中途半端な自分のクソコードをガチャガチャ触って気分の悪い土曜日にしてしまうくらいならまた別のプロジェクトをやった方がいいだろうと判断。 ただ、全く別の何かをやるのも少し気が引けたので、コン

    Lispインタプリタを作った - 日常と進捗
  • Slack絵文字プログラミング言語 SlackMojicode #kosen10s - Zopfcode

    この記事は「kosen10s Advent Calendar」3日目の記事です。 前回は @whywaita くんの「電気通信大学に入学してかかるお金を計算してみた」でした。 回想 遡ること半年前… allajah 「へえ、絵文字でできたプログラミング言語『Emojicode』だって。10s Slack絵文字で出来たらおもしろそうだねw」 puhitaku 「おおどれどれ、トークンを入れ替えてBotでも作れないか調べてみよう………うわっ!」 GitHubに置かれていたのは、視界を飛び出すほどおびただしい量のC++。 まるでそいつは、出来心でForkしようとした僕の未熟さをまざまざと見せつけるかのように、ただ悠然と横たわっていたのだった…………… はじめに こんにちは。puhitaku a.k.a. ルータ芸人 a.k.a. kosen10s Slack 筆頭絵文字主 です。 10s Ad

    Slack絵文字プログラミング言語 SlackMojicode #kosen10s - Zopfcode
  • Pythonで関数プログラミング入門 - モジログ

    united-coders.com - Functional programming with Python http://united-coders.com/christian-harms/functional-programming-with-python Pythonを使った、関数プログラミングの入門的な記事。 短い記事なのに、すごく良くまとまっていて、説明の流れもいい。関数プログラミングの入門としても、Pythonの入門としてもいいと思う。 「整数のリストから奇数だけ取り出す」という処理を、まずforループを使った平明なロジックで書き、それを少しずつ関数プログラミングっぽい書き方にしていく。使っているのは主に、filter、map、reduce、lambda、list comprehension(リスト内包表記)など。 関数プログラミングでは、関数をオブジェクトとして渡すことが前提

  • 1