V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sgissb1
V2EX  ›  问与答

Python 、mongodb 菜鸡的几个疑问

  •  
  •   sgissb1 · 2017-12-19 11:41:25 +08:00 · 950 次点击
    这是一个创建于 2329 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在用 python+mongodb 倒腾玩具性的工具。现在遇到几个疑问,google 和度娘都没有很好的了解清楚想问一问,各位老司机。

    ------- python3 -------
    1. 用了一大堆 python3 官方文档的库,和 pymongo,是否可以把解析器换成 pypy 之类多线程优化好的。
    2. pypy 官网上没找到如何把 cpython 临时替换成 pypy 的说明,或者我对 pypy 的理解是有问题
    3. 想加快 python 代码的运行,除了每次执行生成的临时缓存 pyc、pyd 文件之外,有没有可以一步到位编译成二进制文件的(我的意思就是说,再不改动或者优化代码的情况下,可否像强语言那样编译成目标代码的情况)
    4. 单点中环境( cpython ),多进程和多线程如何选;感觉多进程通讯好麻烦。

    ------- mongodb (有些概念我还停留在 sql 阶段,所以用 sql 的术语来代替一下) -------
    1. 看到官网有介绍说,可以锁库函数。但没有找到锁表的函数。网上解释 CRUD 时会自动锁表。这个多并发操作同一张表的时候,脏数据问题是否存在啊,有没有靠谱传送门供参考。
    2. mongodb 不同函数操作性能有没有靠谱传送门,想做一个定性了解
    3 条回复    2017-12-19 15:36:31 +08:00
    yuchenyang1994
        1
    yuchenyang1994  
       2017-12-19 14:13:23 +08:00
    1. 操作 mongodb 这种 io 操作,用啥解释器都一样,不明白你要干什么
    2. pypy 就是解释器,不要替换,装一个解释器就可以,用 pypy 解释器运行
    3. 可以,用 cython,
    4.io 密集型用多线程,python3 用 async/await 也就是协程,计算密集型用多进程,
    Morriaty
        2
    Morriaty  
       2017-12-19 14:24:32 +08:00
    1. 可以考虑用 motor,前提是对有异步有足够的理解
    2. pypy 也是有 GIL 的
    3. pyc 只是提升模块的加载速度,而不是运行速度
    4. IO 密集型用多进程或异步,计算密集型请换语言
    sgissb1
        3
    sgissb1  
    OP
       2017-12-19 15:36:31 +08:00
    @Morriaty 针对哥们你的逐条回复

    1. 我去看看哈。
    2. 那看来 pypy 也是没有必要的哈
    3. 那有没有办法一步到位的?就是省掉运行时的解析过程?
    4. 没有做过定性分析,但从主管来看,io 占比会多一点,但后续也不清楚。主要是字符串解析简单好调代码。


    @yuchenyang1994
    1. 然而这只是你自己的想象。我把 python 和 mongdo 分开问问题的
    2. 我试试哈,不知道 anconda 会不会有坑
    3. cython 我再看看,看介绍是要重写部分代码的
    4. 协程这玩意我是知道,不过性能上有多大提升就不清楚了。以前用协程画过界面玩(游戏里多一些)


    另外感谢两位哥们回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   959 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:33 · PVG 02:33 · LAX 11:33 · JFK 14:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.