qq_23934639
qq_23934639
采纳率66.7%
2018-09-20 03:12 阅读 938

python多进程共享内存失败,共享数组无法在进程内赋值

5

问题描述:
在运行socket之后,共享内存的方法就失效了,同样尝试了内存映射mmap,
同样无法成功运行。
首先进程一需要接受来自网口的数据,数据是实时发送的,信息密度较大,所
以想尝试多进程并发提高运行速度,但python中socket和内存操作产生了冲突
,墙内墙外都没有调查到相关的问题,有人可以帮忙解答下么?管道的方式太
慢了,数据大约每秒30个包,一个包1905个字节。
有什么方法可以解决这个问题么?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • oyljerry oyljerry 2018-09-20 06:45

    起码先要看看你是如何尝试的,具体的错误信息是什么。

    如果真的共享的数据比较大,那么可以直接考虑内存数据库等,比如redis,通过它来进行数据写入,读取

    点赞 1 评论 复制链接分享
  • qq_23934639 qq_23934639 2018-09-20 08:06
     from multiprocessing import Process,Array
    import time
    from socket import *
    
    server=socket(AF_INET,SOCK_STREAM)
    server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
    server.bind(('',49153))
    server.listen(5)
    
    def fun(m,n):
        conn, client_addr = server.accept()
        m[1] = 88
    if __name__ == '__main__':
        m = Array('i', 5)
        p = Process(target=fun, args=(m, 5))
        p.start()
        time.sleep(1)
        print(m[1])
        p.join()
    
    点赞 评论 复制链接分享

相关推荐