Jon*_*han 26 python ipc inter-process-communicat
什么是具有以下要求的进程间通信(IPC)框架\技术:
更新1:进程位于同一主机上,并使用相同版本的Python和其他模块
更新2:进程由用户独立运行,其中没有一个产生其他进程
Ray*_*ger 18
本机对象不会在进程之间共享(由于引用计数).
相反,您可以使用unix域套接字,mmap,zeromq或专为并发访问而设计的中介(如sqlite3)来挑选它们并共享它们.
经过测试,我发现以下方法适用于使用的Linux mmap。
Linux有/dev/shm。如果使用POSIX创建共享内存shm_open,则会在此文件夹中创建一个新文件。
尽管python的mmap模块不提供该shm_open功能。我们可以使用法线open在其中创建文件,该文件/dev/shm实际上是相似的并且驻留在内存中。(os.unlink用于删除)
然后对于IPC,我们可以使用mmap将该文件映射到不同进程的虚拟内存空间。所有进程共享该内存。Python可以将内存用作缓冲区并在其顶部创建对象,例如字节和numpy数组。或者我们可以通过ctypes界面使用它。
当然,仍然需要过程同步原语来避免竞争状况。
请参阅mmap doc,ctypes doc,numpy.load并且有一个mmap_mode选项。
并行Python可能值得一看,它适用于Windows,OS X和Linux(我似乎记得我曾经在UltraSPARC Solaris 10机器上使用过它).我不知道它是否适用于PyPy,但它似乎与Psyco一起使用.
| 归档时间: |
|
| 查看次数: |
27743 次 |
| 最近记录: |