最近开发一个后端服务器,游戏的
GO 比较适合来写网络交互的
但是写逻辑比较蛋疼
python 这样的语言适合写逻辑
所以想看看有什么方法把两种语言在项目中混合起来开发
但是以前没有做过,没有经验
大家有做过类似项目的,能指点下吗
GO 比较适合来写网络交互的
但是写逻辑比较蛋疼
python 这样的语言适合写逻辑
所以想看看有什么方法把两种语言在项目中混合起来开发
但是以前没有做过,没有经验
大家有做过类似项目的,能指点下吗
|
liujavamailNov 17, 2020
1
grpc
|
|
2
别折腾!别折腾!别折腾!
|
|
misaka19000Nov 17, 2020
3
Unix domain socket
|
|
PureWhiteWuNov 17, 2020
4
游戏后端服务器,用 Python……认真的么……
|
|
a554340466Nov 17, 2020 via iPhone
5
c++ + lua
|
|
xx6412223Nov 17, 2020
6
这么做就是自己把自己搞死
|
|
index90Nov 17, 2020
7
rpc 要做多一次序列化和反序列化,如此浪费不可取
可以考虑一下 go 编译成动态库,然后在 python 里面用 |
|
joesonwNov 17, 2020
8
golang skylark
skylark 是 babel 用的语言, 是 python 的 subset. 如果只是写逻辑的话可以试一试, 做个 benchmark 看一看 |
|
Kamiyu0087Nov 17, 2020
10
不会 GO 也不会 Python 的能问下为啥 Python 更适合写逻辑?
|
|
TypeErrorNov 17, 2020
11
静态类型语言➕动态脚本嵌入,应该是游戏服务器主流做法吧
某个挺出名的游戏后端框架 skynet 就是这么做的 可以参考楼上说的 skylark |
|
QingXuJiaZhiNov 17, 2020
12
@Kamiyu0087 动态语言、鸭子类型,写业务逻辑是可以很爽,更何况 Go 目前还没有泛型,因此 Go 写业务会有点麻烦。
但话又说回来,动态语言如果不认真写 unittest, 维护起来就很容易出问题了,因此也有人说 “动态一时爽,重构火葬场”,就是这个意思。 |
|
qieqieNov 17, 2020
13
cgo
c shared library python ctypes 觉得 ctypes 写着麻烦的话也有通过 header 自动生成的工具 |
|
xulolololololoNov 17, 2020
14
不知道你要什么级别的性能,python asyncio 异步协程已经很成熟,现在瓶颈一般都是网络 io 和数据库 io 了吧
|
|
paoqi2048Nov 17, 2020
15
@PureWhiteWu 🐷用 Python 的
|
|
paoqi2048Nov 17, 2020
16
带 gc 的 Python 调用带 gc 的 Go 提供的库,这样不太稳吧?
|
|
ytymfNov 17, 2020
17
@PureWhiteWu 网易有话说。。
|
|
estNov 17, 2020
18
你以为的性能问题:网络处理能力不行
实际上的性能问题:DB 存取和外部 IO 一塌糊涂 |
|
a719114136Nov 17, 2020
19
比较成熟的方案就 rpc 。不过同意楼上的别折腾,老老实实用 go 吧
|
|
xuanbgNov 17, 2020
20
Python 写游戏?楼主你是认真的吗?
|
|
magiclz233Nov 17, 2020
21
为啥不直接都用 go 呢,业务用 python 的好处是啥,go+python 比纯 go 的优点在哪
|
|
VegetableNov 17, 2020
22
绝大部分性能损耗在逻辑上,这么做没意义,你想做的可能是中台?中间件?
|
|
PEIENYKYKNov 17, 2020
23
现在就在这么开发项目,说一下我的处理逻辑吧
1. RPC 这个是完完全全的方案,而且还涉及到旧代码屎山 2. 编译 Go 直接 Python 调用 |
|
LeiggNov 17, 2020 via iPhone
24
你想加班吗?
|
|
zzzzzzgggggggNov 17, 2020
25
闲的。。。
|
|
aincvyNov 17, 2020
26
方案一: 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. 可能还需要做一个桥 链接两个项目的接口。 |
|
27
是不是 rpc 比较适合简单的整合。
感觉可能适合我。 |
|
28
Go 写业务怎么蛋疼了?如果无法用 Go 写业务建议去掉 Go,因为你不需要它。
不要为了用 Go 而用,用了 Go 基本就不太需要其他语言了, 你去看看几个排名靠前的 Go 开源项目,基本都是纯 Go, 感觉你的思路没有理清楚,要么纯 Python,要么纯 Go 。 如果有个别库只有 Python 有,我会开一个 Python 的微服务,用 gprc 调用它。 |
|
freemoonNov 18, 2020
29
项目中,go 一般和 C/CPP 结合,没见过和 py 结合的
|
|
30
|
|
sunshinevNov 27, 2020
31
请关注下 chat.osinger.com 最近写的,在 v2 上也好多朋友去看过
|