Skip to content

Commit 9f09b73

Browse files
authored
Merge pull request diffpy#28 from pavoljuhas/fix-cleanup-at-exit
Fix at-exit cleanup to avoid the GIL error
2 parents a0b9f7f + 3a201f2 commit 9f09b73

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/diffpy/srreal/_cleanup.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class prototypes is implemented in libdiffpy. Any Python-extended classes
2727
"""
2828

2929

30+
import atexit
3031
import weakref
3132

3233

@@ -62,7 +63,7 @@ def add(self, obj):
6263
return
6364

6465

65-
def __del__(self):
66+
def clean(self):
6667
while self._references:
6768
wr = self._references.pop()
6869
obj = wr()
@@ -75,7 +76,8 @@ def __del__(self):
7576

7677
# create singleton instance of the cleanup handler
7778
_cleanup_handler = _DerivedClassesCleanUpHandler()
78-
del _DerivedClassesCleanUpHandler
79+
atexit.register(_cleanup_handler.clean)
7980

81+
del _DerivedClassesCleanUpHandler
8082

8183
# End of file.

src/diffpy/srreal/tests/testpairquantity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def test_setPairMask_args(self):
8383
spm = self.pq.setPairMask
8484
gpm = self.pq.getPairMask
8585
self.assertRaises(TypeError, spm, 0.0, 0, False)
86-
self.assertRaises(TypeError, spm, numpy.complex(0.5), 0, False)
86+
self.assertRaises(TypeError, spm, complex(0.5), 0, False)
8787
self.assertTrue(gpm(0, 0))
8888
spm(numpy.int32(1), 0, True, others=False)
8989
self.assertTrue(gpm(0, 1))

0 commit comments

Comments
 (0)