首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

Python3.5 之前的版本,因为不是线程安全, celery 无法执行 zipfile,有这个问题吗?

  •  
  •   miniyao · 65 天前用 Android 发布 · 1234 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。
    16 回复  |  直到 2018-12-13 18:46:05 +08:00
        1
    klesh   65 天前 via Android
    线程不安全? GIL 了解一下?难道你用的不是 cpython?
        2
    Trim21   65 天前
    @klesh GIL 并不保证 python 所有操作就是线程安全的...
        3
    silkriver   65 天前
    用 async/await 保证线程安全
        4
    klesh   65 天前 via Android
    @Trim21 仔细看了一下,你说得对。谢谢
        5
    klesh   65 天前
    @Trim21 @miniyao python3.5 是做了什么吗?好像找不到相关资料?
        6
    lolizeppelin   65 天前
    python 这种不能用多核的渣渣 压缩不想办法 fork 到其他进程里干 你想卡死当前进程么

    再说了 python 性能这么烂 需要经常压缩的话直接 shell 执行是性能最好的, 条件允许能不用 native 代码去压缩就不要用 python 去压文件
        7
    Trim21   65 天前
    @klesh #5 我也没找到, 不知道楼主为什么这么说...
        8
    richzhu   65 天前 via iPhone
    @lolizeppelin 是有多烂,是准备写航空母舰吗
        9
    silkriver   65 天前
    Python 当然能用多核,开多进程就可以了,GIL 只是说一个进程内开多线程不能用多核
        10
    neoblackcap   65 天前
    @miniyao zipfile 不是很了解,但是你的 celery 不是默认多进程吗?有什么问题,将异常信息写上来。标题一句话,内容全靠猜?
        11
    hotea   65 天前
    celery 有多个模式, prefork (default), eventlet, gevent or solo. 在默认 prefork 模式下开 worker 是多进程,资源都不共享,不存在线程安全问题吧?
        12
    miniyao   65 天前
    @klesh
    @Trim21
    @silkriver
    @lolizeppelin
    @lolizeppelin
    @richzhu
    @silkriver
    @neoblackcap
    @hotea

    参考大家的建议,本地也测试过,情况是这样的:
    本地开发环境,单线程直接启动 celery 运行 zipfile 正常;生产环境是多 worker,这个任务里还有个 for 循环,只运行了第一个 loop 就熄火了。(所以整个任务是没有执行完成的,现在先用 thread 扛着在用,线上 celery 的故障还没有找出来)
        13
    lolizeppelin   65 天前
    @richzhu

    和航空母舰有毛线关系
    压缩这频繁计算的频繁复制 buf 的
    python 又不能用多核还跑到一个进程里
    你这要么进程不干活了 要么压缩死慢
        14
    lolizeppelin   64 天前
    @miniyao
    你不贴代码怎么帮你

    谁懂你代码里做了啥影响了进程
        15
    brucedone   64 天前
    @klesh 大神你好,你们公司还招人吗?我想给你打杂
        16
    myyou   64 天前
    是不是开的线程太多,导致一次打开的文件 io 太多超过了系统的 net.core.somaxconn 的大小?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2427 人在线   最高记录 4346   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 09:19 · PVG 17:19 · LAX 01:19 · JFK 04:19
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1