V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yueyoum
V2EX  ›  程序员

我对 Erlang 和 Gevent 的感受

  •  
  •   yueyoum ·
    yueyoum · 2014-06-24 14:26:01 +08:00 · 6260 次点击
    这是一个创建于 3806 天前的主题,其中的信息可能已经有所发展或是发生改变。
    erlang和gevent都拿来做过几个个人项目,

    他们我都很喜欢

    erlang天生就是做服务器开发的
    gevent是python的一个库,得益与python的好处,使得gevent使用起来也很方便

    其实如果有机会,下个项目用什么,我还没想好,但目前更倾向与gevent

    文章见我blog: http://jianshu.io/p/571db0eb95f8
    25 条回复    2014-07-07 10:22:44 +08:00
    clino
        1
    clino  
       2014-06-24 15:13:10 +08:00
    python开发起来确实效率比较高,只要效率要求不是特别苛刻用python还是挺爽的
    gevent也是很不错的,就是单线程地跑只能利用到单核
    yueyoum
        2
    yueyoum  
    OP
       2014-06-24 15:54:36 +08:00
    @clino
    恩 不过有 zeromq,就可以方便的设计多进程架构
    wuxqing
        3
    wuxqing  
       2014-06-24 16:03:40 +08:00
    我会选gevent:
    1、python比erlang简单多了,找人也好找
    2、函数式编程,处理复杂逻辑还是很蛋疼(或许我能力不够)
    hhkbp2
        4
    hhkbp2  
       2014-06-24 19:35:01 +08:00
    lz处于没掉入过坑的状态
    pythonee
        5
    pythonee  
       2014-06-24 21:49:26 +08:00
    @yueyoum how
    liuyanghejerry
        6
    liuyanghejerry  
       2014-06-24 22:27:46 +08:00
    我喜欢erlang~
    yueyoum
        7
    yueyoum  
    OP
       2014-06-25 00:30:30 +08:00
    @hhkbp2

    能不能分享一下? 让我避免这些坑?
    yueyoum
        8
    yueyoum  
    OP
       2014-06-25 00:31:22 +08:00
    @pythonee how what?
    fx
        9
    fx  
       2014-06-25 00:38:24 +08:00
    @liuyanghejerry
    @yueyoum

    你们对Elixir这个语言怎么看?
    pythonee
        10
    pythonee  
       2014-06-25 09:39:12 +08:00
    @yueyoum 多进程怎么玩
    liuyanghejerry
        11
    liuyanghejerry  
       2014-06-25 10:09:11 +08:00
    @fx 看过一些介绍,觉得会比erlang更简单友好一点,不过还是在观望
    jjx
        12
    jjx  
       2014-06-25 11:34:17 +08:00
    gevent + pyzmq 神搭配, 用了2年多了,目前没有遇到过坑
    yueyoum
        13
    yueyoum  
    OP
       2014-06-25 12:31:21 +08:00
    @jjx 能否分享一下 gevent+pyzmq 的使用心得?
    jjx
        14
    jjx  
       2014-06-25 17:24:17 +08:00
    @yueyoum

    没什么心得,就几个应用场景, 个人感觉很轻

    1. publish/subscribe模式 bottle(gevent)多个进程(subscribe), 从另一个主控进程(publish)接受消息

    2. pull/push模式,将任务分发给多个工作进程

    以前一段时间是用tornado+pyzmq, 现在感觉感觉还是 gevent省心
    ponyfk
        15
    ponyfk  
       2014-06-26 10:11:08 +08:00
    请问一下,你的github中的codebattle项目(python server 那个) observer和player分别是什么啊, 为什么要开两个端口呢?
    yueyoum
        16
    yueyoum  
    OP
       2014-06-26 11:17:15 +08:00
    @ponyfk

    observer 是 unity3d客户端 接入的端口
    player 是ai接入的端口。


    因为 场景中的变化,还得靠 unity3d 实时的通知给server, server记录状态再发送给 player(ai)
    比如子弹是否命中, 这个是在 unity3d 客户端计算的,命中了就通知server。
    ponyfk
        17
    ponyfk  
       2014-06-26 11:30:17 +08:00
    @yueyoum ai是指玩家吗?不是也在unity3d客户端上吗?
    ponyfk
        18
    ponyfk  
       2014-06-26 11:31:53 +08:00
    @yueyoum 是不是ai是npc,是服务端实现的呢
    yueyoum
        19
    yueyoum  
    OP
       2014-06-26 11:43:57 +08:00
    @ponyfk

    不是, ai 是玩家,但玩家不能手动操作,只能靠写代码来操作。
    也就是你们几个人写的ai代码 来对战

    unity3d 是来显示 和 计算场景状态的。
    ponyfk
        20
    ponyfk  
       2014-06-26 12:19:27 +08:00
    @yueyoum 明白了,thx, 对天生有coroutine的golang怎么看呢, 和gevent差不多的
    yueyoum
        21
    yueyoum  
    OP
       2014-06-26 12:37:41 +08:00
    @ponyfk

    不了解 golang, 现在看起来golang的好处就是 编译为native binary, 运行效率高。
    其他没觉得有很大优势。

    有精力可以学学。

    rust也不错
    jyhmijack
        22
    jyhmijack  
       2014-07-04 08:07:40 +08:00
    有机会一定要用Erlang,可惜现在鉴于招人的原因用的gevent+zmq
    yueyoum
        23
    yueyoum  
    OP
       2014-07-04 12:23:15 +08:00
    @jyhmijack

    如果自己很熟悉erlang,那么直接上erlang也行。

    我对erlang并不太熟悉,再加上pycharm这么NB的IDE,让我更觉得写python是很舒服的事情。

    而且 感觉不用class 很难优雅的组织代码……
    falood
        24
    falood  
       2014-07-07 10:19:17 +08:00
    @fx Elixir 很赞呀,我是从 0.10 版本跟过来的,唯一的一点问题是版本迭代过快,很多语法上的变化,不过另一个主要原因是 Erlang 17.0 中加入了 map,这个问题在 7 月底 ElixirConf 之后发了 1.0 版,应该就好很多了
    falood
        25
    falood  
       2014-07-07 10:22:44 +08:00
    @yueyoum 「而且 感觉不用class 很难优雅的组织代码」好像有点太偏激了,我刚开始也是用 python 的,然后学 ruby ,发现竟然没有 decorator ,这还让不让人写代码了。。。再后来发现 ruby 有不同于 python 的思考方式,有它自己的一套解决问题的方案,Erlang 也是一样的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1351 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:25 · PVG 01:25 · LAX 09:25 · JFK 12:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.