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

2020-11-17 13:31:45 +08:00
 zzlettle
最近开发一个后端服务器,游戏的
GO 比较适合来写网络交互的
但是写逻辑比较蛋疼
python 这样的语言适合写逻辑
所以想看看有什么方法把两种语言在项目中混合起来开发
但是以前没有做过,没有经验
大家有做过类似项目的,能指点下吗
4812 次点击
所在节点    Go 编程语言
32 条回复
liujavamail
2020-11-17 13:37:48 +08:00
grpc
anUglyDog
2020-11-17 13:39:58 +08:00
别折腾!别折腾!别折腾!
misaka19000
2020-11-17 13:41:11 +08:00
Unix domain socket
PureWhiteWu
2020-11-17 13:42:20 +08:00
游戏后端服务器,用 Python……认真的么……
a554340466
2020-11-17 13:44:26 +08:00
c++ + lua
xx6412223
2020-11-17 13:44:36 +08:00
这么做就是自己把自己搞死
index90
2020-11-17 13:51:16 +08:00
rpc 要做多一次序列化和反序列化,如此浪费不可取

可以考虑一下 go 编译成动态库,然后在 python 里面用
joesonw
2020-11-17 14:05:59 +08:00
golang skylark

skylark 是 babel 用的语言, 是 python 的 subset. 如果只是写逻辑的话可以试一试, 做个 benchmark 看一看
joesonw
2020-11-17 14:06:10 +08:00
@joesonw 修正, babel -> bazel
Kamiyu0087
2020-11-17 14:31:37 +08:00
不会 GO 也不会 Python 的能问下为啥 Python 更适合写逻辑?
TypeError
2020-11-17 14:35:08 +08:00
静态类型语言➕动态脚本嵌入,应该是游戏服务器主流做法吧
某个挺出名的游戏后端框架 skynet 就是这么做的
可以参考楼上说的 skylark
cmdOptionKana
2020-11-17 14:38:48 +08:00
@Kamiyu0087 动态语言、鸭子类型,写业务逻辑是可以很爽,更何况 Go 目前还没有泛型,因此 Go 写业务会有点麻烦。

但话又说回来,动态语言如果不认真写 unittest, 维护起来就很容易出问题了,因此也有人说 “动态一时爽,重构火葬场”,就是这个意思。
qieqie
2020-11-17 15:19:49 +08:00
cgo
c shared library
python ctypes
觉得 ctypes 写着麻烦的话也有通过 header 自动生成的工具
xulolololololo
2020-11-17 15:26:51 +08:00
不知道你要什么级别的性能,python asyncio 异步协程已经很成熟,现在瓶颈一般都是网络 io 和数据库 io 了吧
paoqi2048
2020-11-17 15:55:10 +08:00
@PureWhiteWu 🐷用 Python 的
paoqi2048
2020-11-17 16:02:13 +08:00
带 gc 的 Python 调用带 gc 的 Go 提供的库,这样不太稳吧?
ytymf
2020-11-17 16:05:28 +08:00
@PureWhiteWu 网易有话说。。
est
2020-11-17 16:25:44 +08:00
你以为的性能问题:网络处理能力不行

实际上的性能问题:DB 存取和外部 IO 一塌糊涂
a719114136
2020-11-17 16:27:50 +08:00
比较成熟的方案就 rpc 。不过同意楼上的别折腾,老老实实用 go 吧
xuanbg
2020-11-17 16:32:04 +08:00
Python 写游戏?楼主你是认真的吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/726176

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX