python: gevent's monkey.patch_all делает subprocess.check_all намного медленнее - PullRequest
0 голосов
/ 02 мая 2018

Вот тестовый скрипт:

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 мс. Поэтому мне было интересно, что делает это, и что я могу сделать, чтобы уменьшить задержку?

1 Ответ

0 голосов
/ 02 мая 2018

Ну, похоже, это известная проблема из gevent самой. Может быть, единственное, что я могу сделать, это либо откатить его до 1.1a1, либо дождаться 1.3b2. Другим решением может быть передача subprocess=False на patch_all()

...