V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
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
smallgoogle
V2EX  ›  Python

Python 多进程,多线程如何分配?

  •  
  •   smallgoogle · 2018-12-19 00:09:14 +08:00 · 3690 次点击
    这是一个创建于 2197 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如我当前有个需求:

    主进程:
    1、socket 通讯;
    2、更新检测;

    我想启用主进程,然后主进程里面启动两个子进程或者是线程;
    socket 保持一直通讯状态;
    更新检测,做个定时器,每天凌晨进行更新检测,如果有更新,就下载回来,然后替换 socket 的 py 脚本;

    那么我这个应该怎么办?
    如果有更新,就在主进程判断?然后结束 socket ?然后替换后 再启动 socket ? 这样操作?


    是用 multiprocessing 还是用 threading ?
    求各位前辈赐教。
    13 条回复    2018-12-21 20:00:55 +08:00
    tomczhen
        1
    tomczhen  
       2018-12-19 00:20:57 +08:00
    代码该怎么写不是需求,代码要解决什么问题才是需求。
    firebroo
        2
    firebroo  
       2018-12-19 00:43:03 +08:00 via Android
    参考 nginx 管理 worker 原理,两子进程监听端口处理通信,主进程程定时更新下载,有更新再启动两个子进程,然后等两子进程处理完所以请求之后关闭他们。
    firebroo
        3
    firebroo  
       2018-12-19 00:44:09 +08:00 via Android
    最后那句是关闭两个老的子进程
    smallgoogle
        4
    smallgoogle  
    OP
       2018-12-19 01:40:57 +08:00
    @firebroo 大神有没有例子文档啥的。
    ladypxy
        5
    ladypxy  
       2018-12-19 04:36:17 +08:00 via iPhone
    没记错的话,python 线程只能 1 个 cpu
    所以通讯肯定多线程,线程下起不起进程自己决定喽
    clino
        6
    clino  
       2018-12-19 07:05:44 +08:00 via Android
    感觉用 Jenkins 调度最方便
    ZoomQuiet
        7
    ZoomQuiet  
       2018-12-19 07:48:31 +08:00
    crontab
    lolizeppelin
        8
    lolizeppelin  
       2018-12-19 10:03:00 +08:00
    别想多,直接抄 openstack 的 service 模块,多线程多进程都帮你封装好了
    不要折腾什么 multiprocessing.
    lolizeppelin
        9
    lolizeppelin  
       2018-12-19 10:04:07 +08:00
    仔细想了下....你现在只适合用 crontab
    labnotok
        10
    labnotok  
       2018-12-19 10:09:39 +08:00 via Android
    多进程+协程
    q397064399
        11
    q397064399  
       2018-12-19 12:55:58 +08:00
    GIL 这把大锁在,讨论多线程就没有任何意义, 建议直接用 协程 简单方便 也容易理解
    cowpea
        12
    cowpea  
       2018-12-19 13:20:04 +08:00
    Jenkins 轮询+1
    superhan
        13
    superhan  
       2018-12-21 20:00:55 +08:00 via Android
    @lolizeppelin 哪个 service 模块 发出来 学习学习
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2359 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:05 · PVG 00:05 · LAX 08:05 · JFK 11:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.