ok ,目前状况, Python2 ,都是 CPython 跑起的,也依赖了太多 CPython 包
库中,同步版本一切 OK
异步代码有 gevent 版本,但是许多三方包受不了 gevent 的 patch 纷纷跪掉,人力,时间又不够解决。结果就是在异步代码这方面就用 java 顶着, python 于是拥有了一个看着能用却用不了的版本。
之前想过的方案:
将众多 IO 放在一起开线程:异想天开了
concurrent.futures :看见源码导入 threading 包,有点怕怕
cython :但是没有找到哪里可以独立出计算的部分来用 c 改写
multiprocessing : multiprocessing.queue 又跪了
pypy : IO 问题
等等
1
dai269619118 2016-01-13 14:39:55 +08:00
python 多进程确实有点坑 用着用着程序就莫名其妙的挂掉
后面只能去掉多线程,用异步来处理 |
2
ethego 2016-01-13 14:51:07 +08:00
你这怎么跪的又不详细说明一下,为什么怕 threading ?
|
3
ipconfiger 2016-01-13 14:59:46 +08:00
@dai269619118 用着用着程序就莫名其妙的挂掉 多半是自己程序报错挂掉了吧
|
4
VicYu OP |
6
nooper 2016-01-13 15:26:39 +08:00
程序写的有问题,却怪 python 问题。有很多解决方案的。
|
7
ustslayer 2016-01-13 20:34:25 +08:00
IO 为主("IO-bound")的程序不一定要用 multi-threading , gevent / twisted / tornado 这样的 event-based 的实现是更好的选择。 gevent 的 greenlet 容易死的话,用 twisted / tornado 这种非 stackless 的、更为安全的库我相信是很好的解决方案。
CPU 为主("CPU-bound")的程序自然不应该用 CPython ,这种活当然是交给 C/C++ 甚至是 numba / OpenCL 来做了。 |
8
mengzhuo 2016-01-14 09:36:01 +08:00 via iPhone
自己并发基础弱还怪 python ……
你把代码拿出来让大家嘲笑和建议吧 |
10
mikezhang0515 2016-01-26 17:30:08 +08:00
个人理解,有 io 就搞多线程,简单踏实,用 Python 就别考虑极限性能
|