跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • go 写网络基础, Python 写逻辑,两种语言如何结合写项目?
未分類
25 11 月 2020

go 写网络基础, Python 写逻辑,两种语言如何结合写项目?

go 写网络基础, Python 写逻辑,两种语言如何结合写项目?

資深大佬 : zzlettle 5

最近开发一个后端服务器,游戏的
GO 比较适合来写网络交互的
但是写逻辑比较蛋疼
python 这样的语言适合写逻辑
所以想看看有什么方法把两种语言在项目中混合起来开发
但是以前没有做过,没有经验
大家有做过类似项目的,能指点下吗
大佬有話說 (30)

  • 資深大佬 : liujavamail

    grpc

  • 資深大佬 : anUglyDog

    别折腾!别折腾!别折腾!

  • 資深大佬 : misaka19000

    Unix domain socket

  • 資深大佬 : PureWhiteWu

    游戏后端服务器,用 Python……认真的么……

  • 資深大佬 : a554340466

    c++ + lua

  • 資深大佬 : xx6412223

    这么做就是自己把自己搞死

  • 資深大佬 : index90

    rpc 要做多一次序列化和反序列化,如此浪费不可取

    可以考虑一下 go 编译成动态库,然后在 python 里面用

  • 資深大佬 : joesonw

    golang skylark

    skylark 是 babel 用的语言, 是 python 的 subset. 如果只是写逻辑的话可以试一试, 做个 benchmark 看一看

  • 資深大佬 : joesonw

    @joesonw 修正, babel -> bazel

  • 資深大佬 : Kamiyu0087

    不会 GO 也不会 Python 的能问下为啥 Python 更适合写逻辑?

  • 資深大佬 : TypeError

    静态类型语言➕动态脚本嵌入,应该是游戏服务器主流做法吧
    某个挺出名的游戏后端框架 skynet 就是这么做的
    可以参考上说的 skylark

  • 資深大佬 : cmdOptionKana

    @Kamiyu0087 动态语言、鸭子类型,写业务逻辑是可以很爽,更何况 Go 目前还没有泛型,因此 Go 写业务会有点麻烦。

    但话又说回来,动态语言如果不认真写 unittest, 维护起来就很容易出问题了,因此也有人说 “动态一时爽,重构火葬场”,就是这个意思。

  • 資深大佬 : qieqie

    cgo
    c shared library
    python ctypes
    觉得 ctypes 写着麻烦的话也有通过 header 自动生成的工具

  • 資深大佬 : xulolololololo

    不知道你要什么级别的性能,python asyncio 异步协程已经很成熟,现在瓶颈一般都是网络 io 和数据库 io 了吧

  • 資深大佬 : paoqi2048

    @PureWhiteWu

  • 資深大佬 : paoqi2048

    带 gc 的 Python 调用带 gc 的 Go 提供的库,这样不太稳吧?

  • 資深大佬 : ytymf

    @PureWhiteWu 网易有话说。。

  • 資深大佬 : est

    你以为的性能问题:网络处理能力不行

    实际上的性能问题:DB 存取和外部 IO 一塌糊涂

  • 資深大佬 : a719114136

    比较成熟的方案就 rpc 。不过同意上的别折腾,老老实实用 go 吧

  • 資深大佬 : xuanbg

    Python 写游戏?主你是认真的吗?

  • 資深大佬 : magiclz233

    为啥不直接都用 go 呢,业务用 python 的好处是啥,go+python 比纯 go 的优点在哪

  • 資深大佬 : Vegetable

    绝大部分性能损耗在逻辑上,这么做没意义,你想做的可能是中台?中间件?

  • 資深大佬 : PEIENYKYK

    现在就在这么开发项目,说一下我的处理逻辑吧

    1. RPC 这个是完完全全的方案,而且还涉及到旧代码屎山
    2. 编译 Go 直接 Python 调用

  • 資深大佬 : Leigg

    你想加班吗?

  • 資深大佬 : zzzzzzggggggg

    闲的。。。

  • 資深大佬 : aincvy

    方案一: go 调用 python 代码。
    参考项目: https://github.com/sbinet/go-python

    方案二:python 调用 go 的模块
    参考阅读: https://cloud.tencent.com/developer/article/1568553
    http://chingchuan-chen.github.io/posts/201804/2018-04-16-python-call-go.html

    方案三:c/c++ 调用 go && python
    1. 把 go 项目编译成动态链接库。
    2. c/c++ 调用上一步生成的动态链接库, 外加调用 python 的库,建立 python 的脚本环境。
    3. 可能还需要做一个桥 链接两个项目的接口。

  • 主 資深大佬 : zzlettle

    是不是 rpc 比较适合简单的整合。
    感觉可能适合我。

  • 資深大佬 : Hanggi

    Go 写业务怎么蛋疼了?如果无法用 Go 写业务建议去掉 Go,因为你不需要它。

    不要为了用 Go 而用,用了 Go 基本就不太需要其他语言了,
    你去看看几个排名靠前的 Go 开源项目,基本都是纯 Go,
    感觉你的思路没有理清楚,要么纯 Python,要么纯 Go 。

    如果有个别库只有 Python 有,我会开一个 Python 的微服务,用 gprc 调用它。

  • 資深大佬 : lasuar

    项目中,go 一般和 C/CPP 结合,没见过和 py 结合的

  • 主 資深大佬 : zzlettle

    @Hanggi 好吧,我试试看用纯 GO 来写
    我发现我用 GO 写的项目,基本写的我头昏脑胀,出问题,或者根本不知道问题到底在哪里
    用 python 写的,我都很轻松,很少出问题

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具