Skip to content

Commit 8d7bfe1

Browse files
authored
Merge pull request #564 from aperture-data/release-0.4.43
Release 0.4.43
2 parents af1c368 + 5aa16e8 commit 8d7bfe1

File tree

11 files changed

+113
-190
lines changed

11 files changed

+113
-190
lines changed

aperturedb/ImageDownloader.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,16 +144,16 @@ def download_image(self, url, filename):
144144

145145
self.times_arr.append(time.time() - start)
146146

147-
def worker(self, thid, generator, start, end):
147+
def worker(self, thid, generator, start, end, run_event):
148148

149149
for i in range(start, end):
150150

151151
url, filename = generator[i]
152152

153153
self.download_image(url, filename)
154154

155-
if thid == 0 and self.stats:
156-
self.pb.update((i - start) / (end - start))
155+
if self.stats:
156+
self.pb.update(1)
157157

158158
def print_stats(self):
159159

aperturedb/ParallelQuery.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ def filter_per_group(group):
214214
self.times_arr.append(query_time)
215215
self.actual_stats.append(worker_stats)
216216

217-
def worker(self, thid: int, generator, start: int, end: int):
217+
def worker(self, thid: int, generator, start: int, end: int, run_event) -> None:
218218
# A new connection will be created for each thread
219219
client = self.client.clone()
220220

@@ -223,9 +223,11 @@ def worker(self, thid: int, generator, start: int, end: int):
223223
if (end - start) % self.batchsize > 0:
224224
total_batches += 1
225225

226-
logger.info(f"Worker {thid} executing {total_batches} batches")
226+
logger.info(
227+
f"Worker {thid} executing {total_batches} batches, {self.stats=}")
227228
for i in range(total_batches):
228-
229+
if not run_event.is_set():
230+
break
229231
batch_start = start + i * self.batchsize
230232
batch_end = min(batch_start + self.batchsize, end)
231233

@@ -238,8 +240,9 @@ def worker(self, thid: int, generator, start: int, end: int):
238240
f"Worker {thid} failed to execute batch {i}: [{batch_start},{batch_end}]")
239241
self.error_counter += 1
240242

241-
if thid == 0 and self.stats:
242-
self.pb.update((i + 1) / total_batches)
243+
if self.stats:
244+
self.pb.update(self.batchsize)
245+
logger.info(f"Worker {thid} executed {total_batches} batches")
243246

244247
def get_objects_existed(self) -> int:
245248
return sum([stat["objects_existed"]
@@ -307,7 +310,7 @@ def query(self, generator, batchsize: int = 1, numthreads: int = 4, stats: bool
307310
logger.info(
308311
f"Commands per query = {self.commands_per_query}, Blobs per query = {self.blobs_per_query}"
309312
)
310-
self.run(generator, batchsize, numthreads, stats)
313+
self.batched_run(generator, batchsize, numthreads, stats)
311314

312315
def print_stats(self) -> None:
313316

aperturedb/Parallelizer.py

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import math
22
import time
3-
from threading import Thread
4-
3+
import threading
54

6-
from aperturedb import ProgressBar
5+
from threading import Thread
6+
from tqdm import tqdm as tqdm
77

88

99
class Parallelizer:
@@ -28,10 +28,7 @@ class Parallelizer:
2828
```
2929
"""
3030

31-
def __init__(self, progress_to_file=""):
32-
33-
self.pb_file = progress_to_file
34-
31+
def __init__(self):
3532
self._reset()
3633

3734
def _reset(self, batchsize: int = 1, numthreads: int = 1):
@@ -46,17 +43,13 @@ def _reset(self, batchsize: int = 1, numthreads: int = 1):
4643
self.error_counter = 0
4744
self.actual_stats = []
4845

49-
if self.pb_file:
50-
self.pb = ProgressBar.ProgressBar(self.pb_file)
51-
else:
52-
self.pb = ProgressBar.ProgressBar()
53-
5446
def get_times(self):
5547

5648
return self.times_arr
5749

58-
def run(self, generator, batchsize: int, numthreads: int, stats: bool):
59-
50+
def batched_run(self, generator, batchsize: int, numthreads: int, stats: bool):
51+
run_event = threading.Event()
52+
run_event.set()
6053
self._reset(batchsize, numthreads)
6154
self.stats = stats
6255
self.generator = generator
@@ -65,7 +58,8 @@ def run(self, generator, batchsize: int, numthreads: int, stats: bool):
6558
self.total_actions = generator.sample_count
6659
else:
6760
self.total_actions = len(generator)
68-
61+
self.pb = tqdm(total=self.total_actions, desc="Progress",
62+
unit="batches", unit_scale=True, dynamic_ncols=True)
6963
start_time = time.time()
7064

7165
if self.total_actions < batchsize:
@@ -82,15 +76,22 @@ def run(self, generator, batchsize: int, numthreads: int, stats: bool):
8276
self.total_actions)
8377

8478
thread_add = Thread(target=self.worker,
85-
args=(i, generator, idx_start, idx_end))
79+
args=(i, generator, idx_start, idx_end, run_event))
8680
thread_arr.append(thread_add)
8781

8882
a = [th.start() for th in thread_arr]
89-
a = [th.join() for th in thread_arr]
83+
try:
84+
while run_event.is_set() and any([th.is_alive() for th in thread_arr]):
85+
time.sleep(1)
86+
except KeyboardInterrupt:
87+
print("Interrupted ... Shutting down workers")
88+
finally:
89+
run_event.clear()
90+
a = [th.join() for th in thread_arr]
9091

9192
# Update progress bar to completion
9293
if self.stats:
93-
self.pb.update(1)
94+
self.pb.close()
9495

9596
self.total_actions_time = time.time() - start_time
9697

aperturedb/ProgressBar.py

Lines changed: 0 additions & 125 deletions
This file was deleted.

aperturedb/Utils.py

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"""
55
from aperturedb.Query import QueryBuilder
66
from aperturedb.CommonLibrary import execute_query
7-
from aperturedb import ProgressBar
7+
from tqdm import tqdm
88
from aperturedb.Connector import Connector
99
import logging
1010
import json
@@ -595,38 +595,42 @@ def _remove_objects(self, type, class_name, batch_size):
595595

596596
total = count
597597

598-
pb = ProgressBar.ProgressBar()
598+
pb = tqdm(total=total, desc=f"Removing {type} {class_name}",
599+
unit="elements", unit_scale=True, dynamic_ncols=True)
599600

600601
find = "Find" + cmd
601602
dele = "Delete" + cmd
602-
while count > 0:
603-
604-
q = [{
605-
find: {
606-
"_ref": 1,
607-
"with_class": class_name,
608-
"results": {
609-
"limit": batch_size
603+
try:
604+
while count > 0:
605+
606+
q = [{
607+
find: {
608+
"_ref": 1,
609+
"with_class": class_name,
610+
"results": {
611+
"limit": batch_size
612+
}
610613
}
611-
}
612-
}, {
613-
dele: {
614-
"ref": 1
615-
}
616-
}]
614+
}, {
615+
dele: {
616+
"ref": 1
617+
}
618+
}]
617619

618-
try:
619-
self.execute(q)
620-
except:
621-
return False
620+
try:
621+
self.execute(q)
622+
except:
623+
return False
622624

623-
self.print(
624-
f"Delete transaction of {batch_size} elements took: {self.client.get_last_query_time()}")
625+
self.print(
626+
f"Delete transaction of {batch_size} elements took: {self.client.get_last_query_time()}")
625627

626-
count -= batch_size
628+
count -= batch_size
627629

628-
if self.verbose:
629-
pb.update(abs((count - total) / total))
630+
if self.verbose:
631+
pb.update(batch_size)
632+
finally:
633+
pb.close()
630634

631635
return True
632636

aperturedb/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
logger = logging.getLogger(__name__)
1818

19-
__version__ = "0.4.42"
19+
__version__ = "0.4.43"
2020

2121
# set log level
2222
formatter = logging.Formatter(

aperturedb/cli/utilities.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def execute(command: CommandTypes,
3636

3737
utils = Utils(create_connector())
3838
available_commands = {
39-
CommandTypes.STATUS: lambda: print(utils),
39+
CommandTypes.STATUS: lambda: print(utils.status()),
4040
CommandTypes.SUMMARY: utils.summary,
4141
CommandTypes.REMOVE_ALL: lambda: confirm(
4242
CommandTypes.REMOVE_ALL, force) and utils.remove_all_objects(),

ci.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,10 @@ build_notebook_image(){
153153
mkdir -p docker/notebook/aperturedata
154154
cp -r aperturedb pyproject.toml LICENSE README.md docker/notebook/aperturedata
155155
LATEST_IMAGE=${DOCKER_REPOSITORY}/aperturedb-notebook${IMAGE_EXTENSION_LATEST}
156+
CPU_IMAGE=${DOCKER_REPOSITORY}/aperturedb-notebook:cpu
156157
echo "Building image ${NOTEBOOK_IMAGE}"
157158
docker build -t ${NOTEBOOK_IMAGE} -t ${LATEST_IMAGE} -f docker/notebook/Dockerfile .
159+
docker build -t ${CPU_IMAGE} -f docker/notebook/Dockerfile.cpu .
158160
if [ "${NO_PUSH}" != "true" ]
159161
then
160162
docker push --all-tags ${DOCKER_REPOSITORY}/aperturedb-notebook

0 commit comments

Comments
 (0)