# system_stats
import json
import urllib . parse
import urllib . request
import urllib . parse
import urllib . request
from Util import ConfigUtil
from Util . ComfyUIUtil import *
from Util . CommonUtil import *
def queue_prompt ( server_address , client_id , prompt ) :
p = { " prompt " : prompt , " client_id " : client_id }
data = json . dumps ( p ) . encode ( ' utf-8 ' )
req = urllib . request . Request ( " http:// {} /prompt " . format ( server_address ) , data = data )
try :
urllib . request . urlopen ( req )
except Exception as err :
print ( err )
return json . loads ( urllib . request . urlopen ( req ) . read ( ) )
def getUse ( server_address ) :
req = urllib . request . Request ( " http:// {} /system_stats " . format ( server_address ) )
res = json . loads ( urllib . request . urlopen ( req ) . read ( ) )
vram_total = res [ ' devices ' ] [ 0 ] [ ' vram_total ' ]
vram_total_str = str ( int ( vram_total / 1024 / 1024 / 1024 + 0.5 ) )
vram_free = res [ ' devices ' ] [ 0 ] [ ' vram_free ' ]
used_vram = vram_total - vram_free
used_vram_str = str ( int ( ( vram_total - vram_free ) / 1024 / 1024 / 1024 + 0.5 ) )
used_lv = round ( 1.0 * ( used_vram ) / vram_total * 100 , 2 )
print ( " 显存共: " + vram_total_str + " GB,已使用: " + used_vram_str + " GB,使用率: " + str ( used_lv ) + " % " )
# vram_total # 显存容量: 25756696576 即24GB
# vram_free # 显存剩余: 25756696576
# torch_vram_total 16005464064
# torch_vram_free 331041996
# GET /system_stats
# 系统统计信息接口
# 打开配置文件
config = ConfigUtil . getConfig ( )
server_address = config . get ( ' comfyui ' , ' server_address ' )
getUse ( server_address )
# 打开文件并读取内容
file_path = r ' ../JSON/27.json '
with open ( file_path , ' r ' , encoding = ' utf-8 ' ) as file :
content = file . read ( )
# 如何清空Comfyui的gpu缓存
# https://wailikeji.blog.csdn.net/article/details/140035515
# queue_prompt(server_address, "cleanGpuRam", content)
# https://comfy.icu/node/easy-clearCacheAll
# https://github.com/comfyanonymous/ComfyUI/issues/3615
# Is there a way to clear the memory (VRAM) after a workflow run?
# There's an API route for it (post /free with { "unload_models": true, "free_memory": true }, and Swarm has a button in the Server tab for that. I don't think comfy itself currently has a button for it
# https://github.com/yolain/ComfyUI-Easy-Use/issues/124
p = { " prompt " : { " unload_models " : True , " free_memory " : True } , " client_id " : " cleanGpuRam " }
data = json . dumps ( p ) . encode ( ' utf-8 ' )
req = urllib . request . Request ( " http:// {} /free " . format ( server_address ) , data = data )
print ( urllib . request . urlopen ( req ) . read ( ) )
# https://github.com/yolain/ComfyUI-Easy-Use
# ComfyUI-Easy-Use 插件
# https://www.runcomfy.com/comfyui-nodes/ComfyUI-Easy-Use/easy-cleanGpuUsed
# https://www.yunrobot.cn/showdoc/web/#/641840309/231516860
# https://www.reddit.com/r/comfyui/comments/1cdhz5v/best_way_to_clear_vram_after_each_generation/