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

2018-12-19 00:09:14 +08:00
 smallgoogle
比如我当前有个需求:

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

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

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


是用 multiprocessing 还是用 threading ?
求各位前辈赐教。
3457 次点击
所在节点    Python
13 条回复
tomczhen
2018-12-19 00:20:57 +08:00
代码该怎么写不是需求,代码要解决什么问题才是需求。
firebroo
2018-12-19 00:43:03 +08:00
参考 nginx 管理 worker 原理,两子进程监听端口处理通信,主进程程定时更新下载,有更新再启动两个子进程,然后等两子进程处理完所以请求之后关闭他们。
firebroo
2018-12-19 00:44:09 +08:00
最后那句是关闭两个老的子进程
smallgoogle
2018-12-19 01:40:57 +08:00
@firebroo 大神有没有例子文档啥的。
ladypxy
2018-12-19 04:36:17 +08:00
没记错的话,python 线程只能 1 个 cpu
所以通讯肯定多线程,线程下起不起进程自己决定喽
clino
2018-12-19 07:05:44 +08:00
感觉用 Jenkins 调度最方便
ZoomQuiet
2018-12-19 07:48:31 +08:00
crontab
lolizeppelin
2018-12-19 10:03:00 +08:00
别想多,直接抄 openstack 的 service 模块,多线程多进程都帮你封装好了
不要折腾什么 multiprocessing.
lolizeppelin
2018-12-19 10:04:07 +08:00
仔细想了下....你现在只适合用 crontab
labnotok
2018-12-19 10:09:39 +08:00
多进程+协程
q397064399
2018-12-19 12:55:58 +08:00
GIL 这把大锁在,讨论多线程就没有任何意义, 建议直接用 协程 简单方便 也容易理解
cowpea
2018-12-19 13:20:04 +08:00
Jenkins 轮询+1
superhan
2018-12-21 20:00:55 +08:00
@lolizeppelin 哪个 service 模块 发出来 学习学习

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

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

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

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

© 2021 V2EX