Python是编译器吗,python是用什么编译程序

  Python是编译器吗,python是用什么编译程序

  进程间通信有信号、流水线、信息队列、信号量、共享存储器、插口等各种方式,本文使用大蟒模块内存映射进行进程间通信的演示。

  地图模块支持窗子和Unix操作系统操作系统系统,但存在差异,并为不同的操作系统提供不同的构造函数。本文在窗子环境下进行。因此,我们将只介绍如何在窗子上使用共享内存进行进程间通信。

  您可以命名窗子共享内存,并且在当前环境中所有进程都可以访问共享内存窗户。上的内存映射构造函数声明如下:

  classmmap.mmap(文件号,长度[,标记名[,访问[,偏移量]]))

  对于共享内存,映射到菲莱诺参数表的文件将传递-1,长度参数表上的内存大小,我们的实例为1024(1k)。标记名参数是共享内存的名称,我们将它命名为共享_mmap ,以便其他进程共享100 .准入参数用于限制对共享内存的访问,其值可以是访问读、访问写或访问_复制

  本文的示例创建两个应用应用程序。一个向共享内存写入字符串,另一个进程读取共享内存的内容。为了方便起见,这里使用Tkinter Gui框架。它内置在大蟒中,因此不需要安装夸脱或简介等第三方图像使用者界面库。代码是写入共享内存的应用应用程序。

  # write_app.py

  导入地图

  来自图形界面导入*

  类写应用程序:

  mmap _ file=无

  def __init__(self,master):

  self.master=主人

  self.master.title(mmapdemo))。

  FRM=frame(self.master))。

  frm.pack())

  self.open_Button=Button(FRM,text=创建一个mmap ,command=self.create_mmap))。

  自我。打开按钮。pack(side=left))))))))。

  self.close_Button=Button(FRM,text=关闭一个mmap ,状态=禁用,command=self.close_mmap))。

  自我。关闭按钮。pack(side=left))))))))。

  self.text=条目(frm)

  self.text.pack(侧=底) )。

  self.text.bind(,self.write_text))。

  (状态=禁用).

  efcreate_mmap(self):

  self.mmap _ file=mmap.mmap (0,1024,access=mmap .ACCESS_WRITE,tagname=share_mmap ))。

  自我。关闭按钮。配置(状态=活动).

  self.open _ button.config(状态=禁用)).

  self.text.config(状态=正常)).

  efclose_mmap(self):

  self.close _ button.config(状态=禁用)).

  自我。打开按钮。配置(状态=活动).

  (状态=禁用).

  self.mmap_file.close(

  efwrite_text(self,event):

  txt=self.text.get(

  self.mmap_file.write(txt)

  self.text.delete(0,len ) txt))

  if __name__==__main__ :

  root=Tk()

  APP=写应用程序(根)).

  根。主循环(

  将上述代码保存到write_app.py文件并运行,可以获得以下效果:

  单击创建一个 mmap 创建名为共享_mmap 的共享内存,并在右侧的输入框中输入你好世界!框中键入名称。然后"回车里",那么"你好世界!"这句话被写入共享存储器。

  要从另一个进程查看共享内存中的数据,请使用以下ReadApp指示从分享_mmap共享内存中读取数据,并将以下代码保存在read_app.py文件中:

  # read_app.py

  导入地图

  类ReadApp:

  mmap _ file=无

  def __init__(self,master):

  self.master=主人

  self.master.title(读mmap))。

  FRM=frame(self.master))。

  frm.pack())

  自我Refresh_Button=Button(FRM,text=刷新内存映射内容,command=self.refresh_mmap))。

  自我。刷新按钮。包装(侧面=顶部))。

  self.text_variable=StringVar(

  self.text=label(FRM、文本变量=self.text _ variable))。

  self.text.pack(侧=底) )。

  efrefresh_mmap(self):

  如果不是self.mmap_file:

  self.mmap _ file=mmap.mmap (-1,1024,access=mmap .ACCESS_READ,tagname=share_mmap )。

  self.mmap_file.seek(0))。

  自我。文本变量。设定(自我。mmap _ file。读取线()

  if __name__==__main__ :

  root=Tk()

  APP=readapp (root))

  根。主循环(

  运行read_app.py文件,点击“刷新mmap内容”按钮,然后点击“hello world!显示" "。该数据已从共享内存中读取。具有以下效果:

  本文中的代码组织在一个文件share_mm_demo.py中,从命令行share_mm_demo.py写入内存的过程在运行时执行,这个操作在命令行share _ mm _ py中执行。

  共享给:

  2013-03-22 18:32

  看745。

  评论

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: