タグ

mmapに関するbabydaemonsのブックマーク (6)

  • Python mmap 使い方 (共有メモリ操作) - Qiita

    日はプロセス間、スレッド間などで値をやり取りする方法を紹介します。 使用する手法は、C言語などを触ったことある人は聞いたことある人もいるかもしれませんが 「共有メモリ (Shared Memory)」という仕組みです。 Pythonで共有メモリを実装するのに便利な「mmap」というライブラリがあるので、 日は紹介したいと思います。 共有メモリとは ざっくりですが共有メモリとは、名前の通りPCのメモリ上の一部を複数のプロセス間で使用できるようにする仕組みです。 最初はこのくらいの理解で十分だと思います。 複数のPythonアプリ間でデータの通信ができるので便利です。 応答速度もかなり高速です。 Python mmap公式ドキュメント ソースコード 記事では共有メモリはファイルに反映される手法を利用します。 これによりアプリ終了時に、最後の状態を維持できるので便利です。 (製造現場などの

    Python mmap 使い方 (共有メモリ操作) - Qiita
  • Man page of MMAP

    Section: Linux Programmer's Manual (2) Updated: 2015-01-22 Index JM Home Page roff page 名前 mmap, munmap - ファイルやデバイスをメモリーにマップ/アンマップする 書式 #include <sys/mman.h> void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); int munmap(void *addr, size_t length); 機能検査マクロの要件に関する情報は「注意」の節を参照。 説明 mmap() は、新しいマッピングを呼び出し元プロセスの仮想アドレス空間に作成する。 新しいマッピングの開始アドレスは addr で指定される。マッピングの長さは length 引

    babydaemons
    babydaemons 2022/07/14
    “addr が NULL の場合、カーネルがマッピングを作成するアドレスを選択する。 この方法は最も移植性のある新しいマッピングの作成方法である。”
  • 個人的な雑記やら感想やらなんやかんや 共有メモリについて

    [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 どうにも共有メモリについて根的な勘違いをしていたみたいなのでメモしておきます。 間違ったことを書いている可能性が高いので、気づいたら指摘してください。 まずWindowsCreateFileMappingやMapViewOfFileを使用してプロセス間通信を実装すると、ファイルを介して情報をやりとりするという事になるようです。 どこかにファイルを作成して、そのファイルの内容を実行しているプロセスの仮想アドレスにマッピングする事であたかもメモリのように操作できるという事らしいです。 このサイトの図2のようなイメージです。 WIndowsでは以下のソースコードです。 HANDLE fh=CreateFile("MapFile",GENERIC_READ|GENERIC_WRITE

    babydaemons
    babydaemons 2020/12/13
    mmapで完全にディスクにアクセスさせないためには、ctypes.CDLLでshm_openを併用しろと
  • pythonでmmapを使ってプロセス間通信をしてみる - クーの自由研究

    「キュー」に替わる方法を確認 七夕が楽しみな今日この頃。皆様、お元気でしょうか? かえるのクーの助手の「井戸中 聖」です。 「キュー」での通信を期待していましたが、予想外にmultiprocessingでの別画面起動が(技術不足で)できなかったので、別の方法で通信を考えます。 余談ですが、キン・ザ・ザ星域では 「クー」:キュー以外の意味を表す言葉。 「キュー」:公言可能な罵倒の言葉。 です。久しくこのブログに貼られてないので、貼ります。旧ソ連ではスターウオーズを知らなくても「キンザザ」なら全国民が知っているほど、有名なSF映画だったそうです。数すくないBlueRayDiskで持っている映画の一つです。 数多くあるこのサイトページのモチーフ(ぱくりネタ)のひとつであり、メインテーマでもあります。 さて「キュー」がつかえない状況なので、他を探します。 mmapを使ってみよう メモリ上のファイル

    pythonでmmapを使ってプロセス間通信をしてみる - クーの自由研究
    babydaemons
    babydaemons 2020/12/13
    mmapの実践的な例
  • Pythonでの共有メモリの実現方法(mmap.mmap) - Qiita

    1 目的 Pythonコードを実施中に、コード内部の変数を外部からアクセスすることで変更したい。 2 内容 Pythonコードを実行中に変数aを外部からアクセスし変更したい。下記のように、常にテキストファイル「TEST.txt」の内容を変数aに格納するコード(test1.py)を考える。ここでtest1.pyを実行中にTEST.txtの中身を変更したとしても、test1.py中の変数aの値は更新されない。(変更前のTEST.txtの値のままになってしまう) 3 どのようにすればいいか TEST.txtの内容をメモリに読み出す。test1.pyとtest2.pyはメモリを共有する。test1.pyは変数aにメモリの値を読み出している。test2.pyはメモリの値を変更する。test1.pyを実行すると常にメモリから値を読み取り変数aに格納する。test2.pyを実行すると、メモリの値が変更さ

    Pythonでの共有メモリの実現方法(mmap.mmap) - Qiita
    babydaemons
    babydaemons 2020/12/13
    可変長の場合は面倒くさい
  • GitHub - knu/ruby-mmap: Ruby bindings for Unix mmap(2) by Guy Decoux

    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

    GitHub - knu/ruby-mmap: Ruby bindings for Unix mmap(2) by Guy Decoux
  • 1