Added threading
This commit is contained in:
@@ -10,6 +10,8 @@ import tempfile
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import io
|
import io
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
import threading
|
||||||
|
import concurrent.futures
|
||||||
|
|
||||||
import cartopy.crs as ccrs
|
import cartopy.crs as ccrs
|
||||||
from cartopy.io.img_tiles import OSM
|
from cartopy.io.img_tiles import OSM
|
||||||
@@ -96,16 +98,6 @@ def get_radar_from_aws(aws_object):
|
|||||||
radar : Py-ART Radar Object
|
radar : Py-ART Radar Object
|
||||||
Radar closest to the queried datetime
|
Radar closest to the queried datetime
|
||||||
"""
|
"""
|
||||||
|
|
||||||
#find the closest available radar to your datetime
|
|
||||||
|
|
||||||
#closest_datetime = _nearestDate(datetimes, datetime_t)
|
|
||||||
#index = datetimes.index(closest_datetime)
|
|
||||||
|
|
||||||
#localfile = tempfile.NamedTemporaryFile()
|
|
||||||
#keys[index].Object().download_file(localfile.name)
|
|
||||||
#aws_object.download_file(localfile.name)
|
|
||||||
#radar = pyart.io.read(localfile.name)
|
|
||||||
filename = aws_object.key.replace('/', '_')
|
filename = aws_object.key.replace('/', '_')
|
||||||
if not os.path.isfile(f'cache/rawradar/{filename}'):
|
if not os.path.isfile(f'cache/rawradar/{filename}'):
|
||||||
printdebug('Cache Miss')
|
printdebug('Cache Miss')
|
||||||
@@ -142,10 +134,11 @@ def generate_radar_image(radar_data, tiler, mercator):
|
|||||||
|
|
||||||
radar_data.fields['reflectivity']['data'][:, -10:] = np.ma.masked
|
radar_data.fields['reflectivity']['data'][:, -10:] = np.ma.masked
|
||||||
|
|
||||||
gatefilter = pyart.filters.GateFilter(radar_data)
|
# gatefilter = pyart.filters.GateFilter(radar_data)
|
||||||
gatefilter.exclude_transition()
|
# gatefilter.exclude_transition()
|
||||||
gatefilter.exclude_masked("reflectivity")
|
# gatefilter.exclude_masked("reflectivity")
|
||||||
gatefilter.exclude_below('reflectivity', 16)
|
# gatefilter.exclude_below('reflectivity', 16)
|
||||||
|
gatefilter = pyart.filters.moment_based_gate_filter(radar_data)
|
||||||
|
|
||||||
printdebug('Despeckling')
|
printdebug('Despeckling')
|
||||||
despeckle_gatefilter = pyart.correct.despeckle_field(radar_data, 'reflectivity', gatefilter=gatefilter, size=20)
|
despeckle_gatefilter = pyart.correct.despeckle_field(radar_data, 'reflectivity', gatefilter=gatefilter, size=20)
|
||||||
@@ -171,6 +164,20 @@ def generate_radar_image(radar_data, tiler, mercator):
|
|||||||
|
|
||||||
return fig
|
return fig
|
||||||
|
|
||||||
|
def _thread_generate_radar_image(radar_data, dataName, tiler, mercator, index, lock):
|
||||||
|
if not os.path.isfile(f'cache/radarimages/{dataName}.png'):
|
||||||
|
fig = generate_radar_image(radar_data, tiler, mercator)
|
||||||
|
frame = convert_fig_to_img(fig)
|
||||||
|
frame.save(f'cache/radarimages/{dataName}.png')
|
||||||
|
lock.acquire()
|
||||||
|
secondary_frames[index] = frame
|
||||||
|
lock.release()
|
||||||
|
else:
|
||||||
|
frame = Image.open(f'cache/radarimages/{dataName}.png')
|
||||||
|
lock.acquire()
|
||||||
|
secondary_frames[index] = frame
|
||||||
|
lock.release()
|
||||||
|
|
||||||
fmt = '%Y%m%d_%H%M%S'
|
fmt = '%Y%m%d_%H%M%S'
|
||||||
currentDatetime = datetime.now(timezone.utc)
|
currentDatetime = datetime.now(timezone.utc)
|
||||||
num_frames = 20
|
num_frames = 20
|
||||||
@@ -192,13 +199,18 @@ else:
|
|||||||
firstFrame = Image.open(f'cache/radarimages/{radarKeys[0]}.png')
|
firstFrame = Image.open(f'cache/radarimages/{radarKeys[0]}.png')
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
|
lock = threading.Lock()
|
||||||
|
threadPool = concurrent.futures.ThreadPoolExecutor(max_workers=4)
|
||||||
for i in range(num_frames - 1):
|
for i in range(num_frames - 1):
|
||||||
if not os.path.isfile(f'cache/radarimages/{radarKeys[i + 1]}.png'):
|
# if not os.path.isfile(f'cache/radarimages/{radarKeys[i + 1]}.png'):
|
||||||
fig = generate_radar_image(radar[radarKeys[i + 1]], tiler, mercator)
|
# fig = generate_radar_image(radar[radarKeys[i + 1]], tiler, mercator)
|
||||||
secondary_frames[i] = convert_fig_to_img(fig)
|
# secondary_frames[i] = convert_fig_to_img(fig)
|
||||||
secondary_frames[i].save(f'cache/radarimages/{radarKeys[i + 1]}.png')
|
# secondary_frames[i].save(f'cache/radarimages/{radarKeys[i + 1]}.png')
|
||||||
else:
|
# else:
|
||||||
secondary_frames[i] = Image.open(f'cache/radarimages/{radarKeys[i + 1]}.png')
|
# secondary_frames[i] = Image.open(f'cache/radarimages/{radarKeys[i + 1]}.png')
|
||||||
|
threadPool.submit(_thread_generate_radar_image, radar[radarKeys[i + 1]], radarKeys[i + 1], tiler, mercator, i, lock)
|
||||||
|
|
||||||
|
threadPool.shutdown(wait=True)
|
||||||
|
|
||||||
datetimeString = datetime.strftime(currentDatetime, fmt)
|
datetimeString = datetime.strftime(currentDatetime, fmt)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user