请教下, 用 Python 调用 goroutine 实现的线程池, 做一些 http 请求可行吗

2021-07-01 12:00:07 +08:00
 song135711
2624 次点击
所在节点    Python
27 条回复
wellsc
2021-07-01 12:12:26 +08:00
出了 http 还有别的方式吗
pabupa
2021-07-01 12:44:22 +08:00
emmm……试试共享内存,功能肯定可以做到
CEBBCAT
2021-07-01 12:50:49 +08:00
是不是就我一人儿没听懂?线程池一般不都是进程内部的吗?进程内部应该就是一个二进制吧,那还怎么跨语言调用呢? ddl/so ?

可以讲讲为什么这样设计吗?
song135711
2021-07-01 13:04:04 +08:00
@wellsc 都是 io 密集型的任务
no1xsyzy
2021-07-01 13:12:46 +08:00
为什么要用次线程调度形式实现线程池?
为什么要从 Python 调用 golang 跨语言?

为什么不用 asyncio 呢?
Jwyt
2021-07-01 13:19:46 +08:00
@song135711 io 密集型的,和语言速度关系不大。就像 5 楼说的直接 python 请求就好了
wellsc
2021-07-01 13:19:56 +08:00
@song135711 跟 io 密集型有啥关系?跨语言调用除了 http 还有别的更优解吗
youngce
2021-07-01 13:53:37 +08:00
槽点有点多,“goroutine 实现的线程池“ 不应该是协程池吗?

话说回来,假如你用 python 去调 golang,中间走 http 协议,怎么说也要花费个 20ms,python 的 CPU 性能再怎么拉胯也比多一次网络 IO 强吧
est
2021-07-01 13:56:28 +08:00
goroutine 是 golang 专有的吧。py 怎么个调法?
LeeReamond
2021-07-01 14:07:24 +08:00
@wellsc 老哥你回了两层了还没搞清楚状况吗...老哥在哪里高就?
wellsc
2021-07-01 14:08:45 +08:00
@LeeReamond 来,键盘给你,你来说说你怎么理解的。楼主 Python 想要调用 golang 的 goroutine 用 Http 有什么问题?
Jwyt
2021-07-01 17:09:03 +08:00
@wellsc 因为本质就是做一些 http 请求,直接用 python 请求就好了,何必用 python 调 golang
wellsc
2021-07-01 17:11:54 +08:00
@Jwyt 楼主也没说背景啊,就说了需求,顺着楼主的思路解决有问题吗,不然还要去猜背景?
learningman
2021-07-01 17:18:34 +08:00
@wellsc 因为见过太多 XYZ 问题了
wellsc
2021-07-01 17:23:59 +08:00
@learningman 所以说你知道 x 问题是啥吗?
Jwyt
2021-07-01 17:42:34 +08:00
@wellsc 做 http 请求能有啥背景?顺着楼主的思路解决,楼主的思路就是多此一举呀
Vegetable
2021-07-01 17:47:43 +08:00
从中午到现在,这个帖子我一直在关注,可惜到现在也没搞清楚楼主想干啥

你是想通过.so 在 py 里使用 go 编写的代码?还是想在 python 通过 http 调用 go 实现 RPC ?
Trim21
2021-07-01 17:51:28 +08:00
我来猜测一下,楼主是不是要用一段 golang 代码来处理请求,但是又不会写 golang ?
dreampuf
2021-07-01 17:56:56 +08:00
可行,问题是从哪里开始,由 Golang serve HTTP listen 还是 Python?
如果是前者可以考虑 Python embedded Golang 的实现,参考 https://github.com/a-tal/httpy
如果是后者,可以在标准的 Python Webservice 之后将 request/response 的 fd 转给 golang 参考 https://github.com/vladimirvivien/go-cshared-examples

但是无论如何,就你提到的都是 IO 密集型任务,最终都会被转嫁成为 IO 更密集型任务。
你这个问题背后可能是对于 GIL 的不满,或者是觉得 Complied language 的灵活度的抱怨。这些都可以拆分成更细的领域去解决。当然直接混合两个运行时环境除了 ROI 不高,也没有什么问题。
keepeye
2021-07-01 18:04:50 +08:00
你这应该用 grpc 或者 mq 实现

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

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

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

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

© 2021 V2EX