import time
import pymysql
class Result:
def __init__(self):
pass
def set_result(self, result):
pass
def set_detail(self, detail):
pass
def get_json(self):
pass
first_time = time.time()
conn = pymysql.connect()
cursor = conn.cursor()
cursor.execute("sql")
r = cursor.fetchone()
res, detail = r[0], r[1]
second_time = time.time()
result = Result()
result.set_result(res)
result.set_detail(detail)
data = result.get_json()
third_time = time.time()
在单进程中其中各个时间段的间隔特别短, 也就是当前代码几乎就是秒完成, 但是在 多进程当中, 有时候 second_time 到 third_time 的间隔有的时候竟然会相差 20 多 s, 就是感觉特别奇怪, 有大神有什么方法解决么? 其中 Result 类就是 对 结果进行格式化的, 因该花费不了多少时间. 但是 结果往往相反
1
smallpython 2020-10-30 11:54:42 +08:00
只看你的示例代码看不出来有啥问题, 多进程的示例和 get_json 的示例能贴出来吗
|
2
no1xsyzy 2020-10-30 13:58:11 +08:00
那这显然是 Result 的问题,你全 pass 了让人看啥呢?
|
3
18870715400 OP 就是因为多进程的原因, 我今天看了日志, 前面的时候跑的挺快的, 但是到后面整个时间越来越长
|
4
18870715400 OP @smallpython
@no1xsyzy 我查看了日志,主要是因为进程数目超过了电脑核心书目,所以多进程是假的多进程,当程序执行完数据库相关的代码之后跑去执行别的进程之后再回来继续执行,所以时间间隔很长,那么有什么解决的方法呢 |
5
no1xsyzy 2020-10-30 19:41:47 +08:00
@18870715400 进程池…… 不要每一处单独开进程
多进程是真的多进程,卡到核心数瓶颈了不是多进程本身的问题,是写法或者配置的问题…… |
6
18870715400 OP @no1xsyzy 没有办法, 差不多每一项都是单独的功能, 然后该功能单独有多个线程, 没有办法再缩了. 总的大概有 7-9 个进程
|
7
no1xsyzy 2020-11-01 02:51:46 +08:00
不对啊你这要是 CPU 密集不就是这样吗?
肯定没闲着就是了, |