python - python: gevent 的 monkey.patch_all 使 subprocess.check_all 慢得多
问题描述
这是测试脚本:
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 毫秒。因此,我想知道是什么导致了这种情况发生,我能做些什么来减少延迟?
解决方案
好吧,看来这本身就是一个已知问题。gevent
也许我唯一能做的就是将其回滚到1.1a1
或等待1.3b2
. 另一种解决方案可能是传递subprocess=False
给patch_all()
推荐阅读
- r - 为 gtsummary 包设置值默认主题和粗体变量
- android - 最新的 Android Studio 以全屏模式打开每个窗口或弹出窗口
- c# - EF Core 内存使用和 QueryTrackingBehavior.NoTracking
- c# - 从标准库播放 MediaPlayer
- django - Django 错误:没有唯一约束匹配引用表的给定键
- python - 在 TCP 客户端断开连接后 Python 的 asyncio 的事件循环停止
- sql - SQL中如何处理重复记录?
- python - 在异步子进程中运行 FFMPEG,然后在条件完成后终止?
- asp.net-web-api - 添加 DelegatingHandler 后,WebAPI 2 出现间歇性 CORS 问题
- javascript - 在 appscript 中创建详细视图选项卡时遇到问题