以下是测试脚本:
from gevent.monkey import patch_all; patch_all()
import subprocess
from subprocess import STDOUT
from tempfile import NamedTemporaryFile
import datetime
with NamedTemporaryFile() as f:
print('Subprocess call at {}'.format(datetime.datetime.now()))
ret = subprocess.check_call(['iptables', '-t', 'mangle', '-L', '-vx'], stdout = f, stderr = STDOUT)
print('Subprocess call end at {}'.format(datetime.datetime.now()))
使用patch_all
时,执行时间通常约为600毫秒,没有patch_all
的执行时间仅为约30毫秒。因此,我想知道是什么导致这种情况发生,我该怎么做才能减少延迟?
答案 0 :(得分:0)
好吧,这似乎是gevent
1.1a1
本身。也许我唯一能做的就是将其回滚到1.3b2
或等待subprocess=False
。另一种解决方案可能是将patch_all()
传递给outer1