| 
 | 
 
使用内存映射文件(适用于Windows) 
这种方法通过Windows API来实现,允许两个应用程序共享内存中的数据块。这种方法在性能上非常高效,但需要Windows平台支持,并且需要处理同步问题以避免竞争条件。在Delphi中可以使用TMemoryMappedFile类来实现。在Python中,可以使用mmap模块或者memory_fs库(如pywin32)。然而,对于跨平台的需求,这种方法可能不是最佳选择。对于跨平台需求,通常推荐使用数据库或网络通信方法。 
 
选择哪种方法取决于你的具体需求,如数据量大小、实时性要求、是否需要跨平台以及系统的复杂性等因素。通常,对于大多数项目,使用数据库或文件共享就 
- import mmap
 
 - import contextlib
 
 - ####################################
 
 - # to clear share data file with \x00
 
 - ####################################
 
 - def cleanShareFile(fName):
 
 -         with open(fName, "wb") as f:
 
 -                         fill = '\x00' * 1024
 
 -                         fill = fill.encode(encoding='utf-8')  # turns str to bytes and write to file.
 
 -                         f.write(fill)  # turns str to bytes and write to file.
 
 -                         f.close()
 
 - ####################################
 
 - # write money data to data file
 
 - ####################################
 
 - def writeDataToShareFile(fName, money_dictionary):
 
 -         with open(fName,'r+b') as f:   
 
 -                 with contextlib.closing(mmap.mmap(f.fileno(), 1024, access=mmap.ACCESS_WRITE)) as m:
 
 -                         try:
 
 -                                 m.seek(0)
 
 -                                 outp_string = 'Pufa:' + str(money_dictionary['pufa']) + \
 
 -                                                         '|Lingqian:' + str(money_dictionary['lingqian']) + \
 
 -                                                         '|Qita:' + str(money_dictionary['qita'])
 
 -                                 outp_string.rjust(1024, '\x00')  # 右对齐outp_string为\x00
 
 -                                 outp_bytes = outp_string.encode(encoding='utf-8')  # 将str类型转变为bytes类型
 
 -                                 m.write(outp_bytes)
 
 -                                 m.flush()
 
 -                                 print(u"写入成功!")
 
 -                         except Exception as err:
 
 -                                 print('!'*10 + repr(err))  # 获取完整的err信息。
 
 -                         # m.close()
 
 -                 f.close()
 
  
- ####################################
 
 - # main flow 输入数字并存储于共享数据文件
 
 - ####################################
 
 - print(u"请输入数字:")
 
 - lingqian = input(u"微信零钱:")
 
 - pufa = input(u"浦发:")
 
 - qita = input(u"其他零钱:")
 
 - money_diction={'lingqian':lingqian, 'pufa':pufa, 'qita':qita}
 
  
- fName = ".\money.dat"
 
 - cleanShareFile(fName)
 
 - writeDataToShareFile(fName, money_diction)
 
  复制代码- import mmap
 
 - import contextlib
 
 - ####################################
 
 - # Get content of share file as string
 
 - ####################################
 
 - def getShareFileContent():
 
 -         fName = "./money.dat"
 
 -         text = None
 
 -         with open(fName,'r') as f:   
 
 -                 with contextlib.closing(mmap.mmap(f.fileno(), 1024, access=mmap.ACCESS_READ)) as m:
 
 -                         text = m.read(1024)
 
 -                         text = str(text, encoding='utf-8').replace('\x00', '')
 
 -                         m.close()
 
 -                 f.close()
 
 -         return text
 
 - ####################################
 
 - # return:{Pufa:100, Lingqian:100, Qita:100}
 
 - ####################################
 
 - def getMoney():
 
 -         dic = {}
 
 -         text = getShareFileContent()
 
 -         ls = text.split("|")
 
 -         for item in ls:
 
 -                 key, value = item.split(":")
 
 -                 dic[key] = value
 
 -         return dic
 
  复制代码 
 
 |   
 
 
 
 |