【发布时间】:2018-03-10 19:36:03
【问题描述】:
我有一个应用程序,其中有 2 个子进程(RabbitMQ consumer 和 RabbitMQ producer)不断运行(大部分时间它们处于空闲状态)。但我还需要根据RabbitMQ consumer 进程的条件生成另一个N 子进程数量(我们称之为Worker process)。
所以Worker processes 非常轻量级,不会进行大量计算,但是乳清的工作需要很长时间(最多一个小时)。机器本身不会有超过 4 个 CPU 内核。我计划在CentOS 上运行该应用程序。所以问题是:是否可以有很多(我预计从 1 到 20 个)这样的轻量级进程来来去去,并且大部分时间都处于空闲状态?
我的第一个想法是创建一个子进程(Worker process),然后在里面使用线程。但是我听说有人很难将multiprocessing 和threading 模块混合在一起。是真的吗?
顺便说一句,我的应用是在 Python 2.7 中,为了产生子进程,我使用 multiprocessing 模块。
【问题讨论】:
-
20 个进程不算什么,因为它们是轻量级的。
-
我的情况和你一样。进行不同的测试,我发现 20 什么都不是。所以我提高了这个数字,直到我的电脑在不到两分钟的时间内无法创建池,大约 4000 个子进程。根据测试结果,完美数字是 500
标签: python multithreading centos multiprocessing