@@ -23,9 +23,9 @@ def _resource_unlink(name, rtype):
23
23
resource_tracker ._CLEANUP_FUNCS [rtype ](name )
24
24
25
25
26
- def get_rtracker_pid ():
26
+ def get_rtracker_fd ():
27
27
resource_tracker .ensure_running ()
28
- return resource_tracker ._resource_tracker ._pid
28
+ return resource_tracker ._resource_tracker ._fd
29
29
30
30
31
31
class TestResourceTracker :
@@ -40,12 +40,18 @@ def test_resource_utils(self, rtype):
40
40
assert not resource_exists (name , rtype )
41
41
42
42
def test_child_retrieves_resource_tracker (self ):
43
- parent_rtracker_pid = get_rtracker_pid ()
44
- executor = ProcessPoolExecutor (max_workers = 2 )
45
- child_rtracker_pid = executor .submit (get_rtracker_pid ).result ()
46
43
47
- # First simple pid retrieval check (see #200)
48
- assert child_rtracker_pid == parent_rtracker_pid
44
+ # First simple fd retrieval check (see #200)
45
+ # checking fd only work on posix for now
46
+ if sys .platform != "win32" :
47
+ try :
48
+ parent_rtracker_fd = get_rtracker_fd ()
49
+ executor = ProcessPoolExecutor (max_workers = 2 )
50
+ child_rtracker_fd = executor .submit (get_rtracker_fd ).result ()
51
+
52
+ assert child_rtracker_fd == parent_rtracker_fd
53
+ finally :
54
+ executor .shutdown ()
49
55
50
56
# Register a resource in the parent process, and un-register it in the
51
57
# child process. If the two processes do not share the same
@@ -77,23 +83,20 @@ def maybe_unlink(name, rtype):
77
83
e.submit(maybe_unlink, filename, "file").result()
78
84
e.shutdown()
79
85
"""
80
- try :
81
- p = subprocess .run (
82
- [sys .executable , "-E" , "-c" , cmd ],
83
- capture_output = True ,
84
- text = True ,
85
- )
86
- filename = p .stdout .strip ()
87
86
88
- pattern = f"decremented refcount of file { filename } "
89
- assert pattern in p .stderr
90
- assert "leaked" not in p .stderr
87
+ p = subprocess .run (
88
+ [sys .executable , "-E" , "-c" , cmd ],
89
+ capture_output = True ,
90
+ text = True ,
91
+ )
92
+ filename = p .stdout .strip ()
91
93
92
- pattern = f"KeyError: '{ filename } '"
93
- assert pattern not in p .stderr
94
+ pattern = f"decremented refcount of file { filename } "
95
+ assert pattern in p .stderr
96
+ assert "leaked" not in p .stderr
94
97
95
- finally :
96
- executor . shutdown ()
98
+ pattern = f"KeyError: ' { filename } '"
99
+ assert pattern not in p . stderr
97
100
98
101
# The following four tests are inspired from cpython _test_multiprocessing
99
102
@pytest .mark .parametrize ("rtype" , ["file" , "folder" , "semlock" ])
@@ -294,15 +297,12 @@ def test_loky_process_inherit_multiprocessing_resource_tracker(self):
294
297
cmd = """if 1:
295
298
from loky import get_reusable_executor
296
299
from multiprocessing.shared_memory import SharedMemory
297
- from multiprocessing.resource_tracker import (
298
- _resource_tracker as mp_resource_tracker
299
- )
300
300
301
- def mp_rtracker_getattrs ():
301
+ def mp_rtracker_getfd ():
302
302
from multiprocessing.resource_tracker import (
303
303
_resource_tracker as mp_resource_tracker
304
304
)
305
- return mp_resource_tracker._fd, mp_resource_tracker._pid
305
+ return mp_resource_tracker._fd
306
306
307
307
308
308
if __name__ == '__main__':
@@ -312,9 +312,9 @@ def mp_rtracker_getattrs():
312
312
313
313
# loky forces the creation of the resource tracker at process
314
314
# creation so that loky processes can inherit its file descriptor.
315
- fd, pid = executor.submit(mp_rtracker_getattrs).result ()
316
- assert fd == mp_resource_tracker._fd
317
- assert pid == mp_resource_tracker._pid
315
+ parent_fd = mp_rtracker_getfd ()
316
+ child_fd = executor.submit(mp_rtracker_getfd).result()
317
+ assert child_fd == parent_fd
318
318
319
319
# non-regression test for #242: unlinking in a loky process a
320
320
# shared_memory segment tracked by multiprocessing and created its
@@ -326,5 +326,5 @@ def mp_rtracker_getattrs():
326
326
p = subprocess .run (
327
327
[sys .executable , "-c" , cmd ], capture_output = True , text = True
328
328
)
329
- assert not p .stdout
330
- assert not p .stderr
329
+ assert not p .stdout , p . stdout
330
+ assert not p .stderr , p . stderr
0 commit comments