Skip to content

Commit 76f8a77

Browse files
author
woytu
committed
fixed 改变清除内存策略
1 parent aa3c233 commit 76f8a77

File tree

3 files changed

+37
-41
lines changed

3 files changed

+37
-41
lines changed

Pexels.py

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,16 @@
88
# @Package:
99
# @Software: PyCharm
1010
import asyncio
11-
import gc
1211
import os
1312
import re
1413
import threading
1514
import time
1615

17-
import psutil
1816
import zhconv
1917
from bs4 import BeautifulSoup
2018

2119
import Constants
22-
from utils import ReptileUtil, HttpUtil, ThreadPool, DatabaseUtil, FileUtil
20+
from utils import HttpUtil, DatabaseUtil, FileUtil, SystemUtil
2321

2422
s3 = DatabaseUtil.Sqlite3(os.path.join(Constants.DATA_PATH, "pexels"))
2523

@@ -28,7 +26,7 @@
2826

2927
def download_latest_images(page, directory):
3028
try:
31-
wait()
29+
SystemUtil.restart_process(os.path.abspath(__file__))
3230

3331
html = BeautifulSoup(HttpUtil.get("https://www.pexels.com/zh-cn/new-photos?page=" + str(page)).text,
3432
features="lxml")
@@ -92,19 +90,6 @@ def download_latest_images(page, directory):
9290
download_latest_images(page, directory)
9391

9492

95-
def wait():
96-
if psutil.virtual_memory().percent >= 80:
97-
print('内存使用:', psutil.Process(os.getpid()).memory_info().rss)
98-
print("当前内存占用率:", psutil.virtual_memory().percent)
99-
print("垃圾回收机制是否打开:", gc.isenabled())
100-
# 释放内存
101-
gc.collect()
102-
print('内存使用:', psutil.Process(os.getpid()).memory_info().rss)
103-
print("当前内存占用率:", psutil.virtual_memory().percent)
104-
if psutil.virtual_memory().percent >= 80:
105-
wait()
106-
107-
10893
async def run_command(directory):
10994
threading.Timer(21600, run_command).start()
11095
dir_size = FileUtil.count_dir_size(directory)

Wallhaven.py

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,15 @@
88
# @Package:
99
# @Software: PyCharm
1010
import asyncio
11-
import gc
1211
import os
1312
import re
1413
import threading
1514
import time
1615

17-
import psutil
1816
from bs4 import BeautifulSoup
1917

2018
import Constants
21-
from utils import ReptileUtil, HttpUtil, ThreadPool, DatabaseUtil, TranslationUtil, FileUtil
19+
from utils import HttpUtil, DatabaseUtil, TranslationUtil, FileUtil, SystemUtil
2220

2321
s3 = DatabaseUtil.Sqlite3(os.path.join(Constants.DATA_PATH, "wallhaven"))
2422

@@ -34,7 +32,7 @@ def download_images(url, page, directory):
3432
:return:
3533
"""
3634
try:
37-
wait()
35+
SystemUtil.restart_process(os.path.abspath(__file__))
3836

3937
html = BeautifulSoup(HttpUtil.get(url + str(page)).text, features="lxml")
4038
figure = html.find_all("figure")
@@ -141,23 +139,6 @@ def get_tag(page):
141139
get_tag(page + 1)
142140

143141

144-
def wait():
145-
"""
146-
垃圾回收
147-
:return:
148-
"""
149-
if psutil.virtual_memory().percent >= 80:
150-
print('内存使用:', psutil.Process(os.getpid()).memory_info().rss)
151-
print("当前内存占用率:", psutil.virtual_memory().percent)
152-
print("垃圾回收机制是否打开:", gc.isenabled())
153-
# 释放内存
154-
gc.collect()
155-
print('内存使用:', psutil.Process(os.getpid()).memory_info().rss)
156-
print("当前内存占用率:", psutil.virtual_memory().percent)
157-
if psutil.virtual_memory().percent >= 80:
158-
wait()
159-
160-
161142
async def run_command(directory):
162143
threading.Timer(3600, run_command).start()
163144
dir_size = FileUtil.count_dir_size(directory)

utils/SystemUtil.py

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@
88
# @Package:
99
# @Software: PyCharm
1010
import ctypes
11+
import gc
12+
import os
13+
import platform
1114
import sys
1215
from subprocess import call
13-
from pip._internal.utils.misc import get_installed_distributions
14-
import pkg_resources
16+
17+
import psutil
1518

1619

1720
def check_version():
@@ -33,6 +36,8 @@ def update_lib():
3336
更新依赖方式一
3437
:return:
3538
"""
39+
from pip._internal.utils.misc import get_installed_distributions
40+
3641
packages = [dist.project_name for dist in get_installed_distributions()]
3742
call("pip install --upgrade" + ' '.join(packages), shell=True)
3843

@@ -42,6 +47,8 @@ def update_lib_two():
4247
更新依赖方式二
4348
:return:
4449
"""
50+
import pkg_resources
51+
4552
packages = [dist.project_name for dist in pkg_resources.working_set]
4653
call("pip install --upgrade" + ' '.join(packages), shell=True)
4754

@@ -127,5 +134,28 @@ def update_fire_wall(key_name='PublicProfile'):
127134
winreg.CloseKey(regRoot)
128135

129136

137+
def restart_process(path):
138+
"""
139+
当内存占用达到一定比例进程重启
140+
:param path: 执行脚本的全路径
141+
:return:
142+
"""
143+
if psutil.virtual_memory().percent < 80:
144+
print('内存使用:', psutil.Process(os.getpid()).memory_info().rss)
145+
print("当前内存占用率:", psutil.virtual_memory().percent)
146+
# if gc.isenabled():
147+
# # 释放内存
148+
# gc.collect()
149+
print("前进程id:", os.getpid(), "父进程id:", os.getppid())
150+
151+
py = "python3" if (os.system("python3 -V") == 0) else "python"
152+
sysstr = platform.system()
153+
if sysstr == "Windows":
154+
os.system(f"taskkill /pid {os.getpgid()} /f && {py} {path}")
155+
elif sysstr == "Linux":
156+
os.system(f"kill -9 {os.getpgid()} && {py} {path}")
157+
158+
130159
if __name__ == '__main__':
131-
print(get_windows_software())
160+
# print(get_windows_software())
161+
restart_process(os.path.abspath(__file__))

0 commit comments

Comments
 (0)