V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
thechosenone
V2EX  ›  Python

朋友面试遇到的一个题,自己也没好的解决方法

  •  
  •   thechosenone · 2019-02-20 17:18:33 +08:00 · 4970 次点击
    这是一个创建于 2108 天前的主题,其中的信息可能已经有所发展或是发生改变。

    多进程加线程时进程间通信最好的设计是怎样

    23 条回复    2019-02-23 16:53:19 +08:00
    dychenyi
        1
    dychenyi  
       2019-02-20 17:31:25 +08:00
    貌似可以看下 Chrome 多进程架构
    xxxy
        2
    xxxy  
       2019-02-20 17:35:23 +08:00   ❤️ 1
    我可以背出来:信号、管道、消息队列、共享内存
    thechosenone
        3
    thechosenone  
    OP
       2019-02-20 17:37:48 +08:00
    @xxxy 大哥,这是网易面试的问题,你这只说了方式,谁都能背书啊
    thechosenone
        4
    thechosenone  
    OP
       2019-02-20 17:38:02 +08:00
    @dychenyi 这个也太复杂了。。
    lurenw
        5
    lurenw  
       2019-02-20 17:41:58 +08:00
    看通讯涉及到的数据,如果是简单的命令,可以采用信号,消息队列这种。如果有需要操作大量数据的,可以考虑共享内存。如果是在单机上,甚至可以采用文件映射的方式。

    仅供参考
    thechosenone
        6
    thechosenone  
    OP
       2019-02-20 17:43:05 +08:00
    @lurenw 我也觉得问题太笼统了,肯定没有完美的模型来处理广泛的问题,谢谢你的答复
    aijam
        7
    aijam  
       2019-02-20 17:44:56 +08:00
    可以反问面试官,全中国最好的 IT 公司是哪家。
    liuxu
        8
    liuxu  
       2019-02-20 17:46:19 +08:00
    进程信号注册,pcntl_signal 相关
    yidinghe
        9
    yidinghe  
       2019-02-20 17:47:33 +08:00 via Android
    难道不是 socket 吗?
    rayingecho
        10
    rayingecho  
       2019-02-20 17:47:46 +08:00
    "最好"这个词说不定是在给你下套, 面试官应该不至于连"没有银弹"都不知道
    wbing
        11
    wbing  
       2019-02-20 17:48:24 +08:00
    套接字
    cxl008
        12
    cxl008  
       2019-02-20 17:48:54 +08:00
    难道不是 socket 吗?
    CodeCore
        13
    CodeCore  
       2019-02-20 17:58:16 +08:00
    看场景吧....Chrome 这种用的是管道, 牺牲内存换速度.....
    ymj123
        14
    ymj123  
       2019-02-20 18:10:05 +08:00 via Android   ❤️ 1
    是想让你把各种方式列举出来分析优劣吗?
    jiangnanyanyu
        15
    jiangnanyanyu  
       2019-02-20 18:55:41 +08:00 via Android
    你问他最好具体是指哪方面呢?有没有一个衡量的标准呢,如果没有,那么怎么得出来的最好呢?
    911speedstar
        16
    911speedstar  
       2019-02-20 22:15:51 +08:00
    问的是进程间通信,socket。。。没有别的了
    luozic
        17
    luozic  
       2019-02-20 22:19:30 +08:00 via iPhone
    最好的设计? 已有技术实现里面?多进程之间 要么内存换性能先复制再修改,要么直接上数据库的事务同步方式。其他的有多少用的?
    tempdban
        18
    tempdban  
       2019-02-21 07:05:36 +08:00 via Android
    放在共享内存中的无锁队列
    4KMOMhIkocgLELMt
        19
    4KMOMhIkocgLELMt  
       2019-02-21 08:32:54 +08:00 via iPhone
    进程通信不用强调线程吧?
    socketpair or Local socket ?
    openbinder ?
    hp66722667
        20
    hp66722667  
       2019-02-21 10:25:13 +08:00
    感觉面试官随便找了一个不可能回答出完美答案的问题,随便意思意思,估计他自己都不知道
    BubbleNoodle
        21
    BubbleNoodle  
       2019-02-21 12:12:58 +08:00   ❤️ 1
    最好的设计是 tm 的不断迭代出来的
    old18
        22
    old18  
       2019-02-21 15:17:22 +08:00
    脱离了业务场景问最好的的设计都是耍流氓.
    shange123
        23
    shange123  
       2019-02-23 16:53:19 +08:00
    没有最好的设计,只有最适合的场景
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:45 · PVG 23:45 · LAX 07:45 · JFK 10:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.