Python进程间大数据传输速度探究(菜鸟乱写)

一个新手去琢磨这个简直就是作死,起因就是因为我目前正在复制的项目是使用python写一个服务器,这个服务器是是典型计算密集型...一开始的想法就是将服务器分成两个进程,前面进程负责读取客户端的委托计算数据,然后通过写入Redis数据库,然后使用Queue作为通信传输机制,告诉后台进程,有数据了,可以去读取了。

这时候后台进程就去Redis中读取所需要数据,操作完以后再写入另外一个Redis数据库,而前台进程中会有一个线程一直在等待这个Redis中数据,专门负责将计算数据结果发送回去。

优化方案1:

自己做测试,使用timeit,发送使用Redis数据库传输数据没有Queue传输数据块(其实是Redis快,因为我自己测试错误了,坑了自己一天)。然后我想把Redis这边去掉,然后直接使用Queue将客户端接收到的数据,直接发送到后台线程。

(计算数据中有可能出现当下计算不了的,也许要之后才能计算,或者一直不能计算的“脏”数据,但是不能丢掉,因为不知道这个数据什么时候会突然有效,所以要一直测试这个遗留的数据)

这时候在后台专门开一个线程中接收工作,然后接收到内存中...正在计算的线程只要从内存中读取就可以了(相比从Redis读取快很多,我直接把Queue接收数据这部分所消耗的时间给忘记了),但是这个优化方案,后来还加入了一些其他东西,比如多级缓存,主要是放脏数据的,反正是我自己搞了一天,最后发现两个问题:

1.同步问题

2.速度其实没有比原来快多少....


优化方案2:

然后吃饭的时候各种想,突然想起来可以用mmap,这时候为了避免放上面的错误,认真做了一下测试...1MB的数据量的情况下

使用mmap比使用Redis快了大概20倍.这个数字相当可观..


然后没了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值