Skip to content

Commit 2c8c045

Browse files
author
arch
committed
Revert "windows fix hanging thread"
This reverts commit 936ee5f.
1 parent 936ee5f commit 2c8c045

File tree

1 file changed

+33
-19
lines changed

1 file changed

+33
-19
lines changed

funscript_editor/algorithms/funscriptgenerator.py

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,30 @@ class FunscriptGeneratorParameter:
7575
max_threshold: float = float(HYPERPARAMETER['max_threshold'])
7676

7777

78+
def merge_score(item: list, number_of_trackers: int) -> list:
79+
""" Merge score for given number of trackers
7880
81+
Note:
82+
Python multiprocessing methods use a mp.SimpleQueue to pass tasks to the worker processes.
83+
Everything that goes through the mp.SimpleQueue must be pickable.
84+
In python functions are only picklable if they are defined at the top-level of a module.
85+
86+
Args:
87+
item (list): score for each tracker
88+
number_of_trackers (int): number of used tracker (pairs)
89+
90+
Returns:
91+
list: merged score
92+
"""
93+
if number_of_trackers == 1:
94+
return item[0] if len(item) > 0 else []
95+
else:
96+
max_frame_number = max([len(item[i]) for i in range(number_of_trackers)])
97+
arr = np.ma.empty((max_frame_number,number_of_trackers))
98+
arr.mask = True
99+
for tracker_number in range(number_of_trackers):
100+
arr[:item[tracker_number].shape[0],tracker_number] = item[tracker_number]
101+
return list(filter(None.__ne__, arr.mean(axis=1).tolist()))
79102

80103

81104
class FunscriptGeneratorThread(QtCore.QThread):
@@ -390,26 +413,17 @@ def calculate_score(self, bboxes) -> None:
390413
score['y'][tracker_number] = np.array([max([x[1] for x in bboxes['Woman'][tracker_number]]) - w[1] for w in bboxes['Woman'][tracker_number]])
391414

392415
self.logger.info("Merge Scores")
416+
"""
417+
pool, queue = {}, {}
418+
for metric in score.keys():
419+
queue[metric] = mp.Queue()
420+
pool[metric] = threading.Thread(target=merge_score, args=(score[metric], self.params.number_of_trackers, queue[metric], ))
421+
pool[metric].start()
393422
394-
def merge_score(item: list, number_of_trackers: int) -> list:
395-
""" Merge score for given number of trackers
396-
397-
Args:
398-
item (list): score for each tracker
399-
number_of_trackers (int): number of used tracker (pairs)
400-
401-
Returns:
402-
list: merged score
403-
"""
404-
if number_of_trackers == 1:
405-
return item[0] if len(item) > 0 else []
406-
else:
407-
max_frame_number = max([len(item[i]) for i in range(number_of_trackers)])
408-
arr = np.ma.empty((max_frame_number,number_of_trackers))
409-
arr.mask = True
410-
for tracker_number in range(number_of_trackers):
411-
arr[:item[tracker_number].shape[0],tracker_number] = item[tracker_number]
412-
return list(filter(None.__ne__, arr.mean(axis=1).tolist()))
423+
for metric in score.keys():
424+
pool[metric].join()
425+
score[metric] = queue[metric].get()
426+
"""
413427

414428
for metric in score.keys():
415429
score[metric] = merge_score(score[metric], self.params.number_of_trackers)

0 commit comments

Comments
 (0)