Skip to content

Commit

Permalink
ENH start re-writting delete_folder
Browse files Browse the repository at this point in the history
  • Loading branch information
pierreglaser committed Dec 23, 2019
1 parent c9d0840 commit 17110f0
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 8 deletions.
3 changes: 2 additions & 1 deletion joblib/_memmapping_reducer.py
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,8 @@ def _cleanup():
delete_folder = __import__(
pool_module_name, fromlist=['delete_folder']).delete_folder
try:
delete_folder(pool_folder)
# delete_folder(pool_folder)
pass
except WindowsError:
warnings.warn("Failed to clean temporary folder: {}"
.format(pool_folder))
Expand Down
18 changes: 13 additions & 5 deletions joblib/disk.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@
# License: BSD Style, 3 clauses.


import atexit
import os
import sys
import time
import errno
import shutil
import warnings

from .externals.loky.backend import resource_tracker

try:
WindowsError
Expand Down Expand Up @@ -110,16 +112,22 @@ def delete_folder(folder_path, onerror=None):
# allow the rmtree to fail once, wait and re-try.
# if the error is raised again, fail
err_count = 0
files = os.listdir(folder_path)
did_error = False
while True:
try:
shutil.rmtree(folder_path, False, None)
break
except (OSError, WindowsError):
err_count += 1
if err_count > RM_SUBDIRS_N_RETRY:
warnings.warn(
"Unable to delete folder {} after {} tentatives."
.format(folder_path, RM_SUBDIRS_N_RETRY))
# raise
break
atexit.register(resource_tracker.maybe_unlink,
(folder_path, "folder"))
did_error = True

time.sleep(RM_SUBDIRS_RETRY_TIME)
if not did_error:
print("OKOKOK\n\n\n\n\n")
for file in files:
resource_tracker.unregister(
os.path.join(folder_path, file), rtype="file")
2 changes: 1 addition & 1 deletion joblib/executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def apply_async(self, func, args):

def terminate(self):
self._executor.shutdown()
delete_folder(self._temp_folder)
# delete_folder(self._temp_folder)

def map(self, f, *args):
res = self._executor.map(f, *args)
Expand Down
2 changes: 1 addition & 1 deletion joblib/pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -326,4 +326,4 @@ def terminate(self):
if i + 1 == n_retries:
warnings.warn("Failed to terminate worker processes in"
" multiprocessing pool: %r" % e)
delete_folder(self._temp_folder)
# delete_folder(self._temp_folder)

0 comments on commit 17110f0

Please sign in to comment.