@@ -3773,12 +3773,16 @@ def _attach_existing_shmem_then_write(shmem_name_or_obj, binary_data):
3773
3773
local_sms .buf [:len (binary_data )] = binary_data
3774
3774
local_sms .close ()
3775
3775
3776
+ def _new_shm_name (self , prefix ):
3777
+ return prefix + str (os .getpid ())
3778
+
3776
3779
def test_shared_memory_basics (self ):
3777
- sms = shared_memory .SharedMemory ('test01_tsmb' , create = True , size = 512 )
3780
+ name_tsmb = self ._new_shm_name ('test01_tsmb' )
3781
+ sms = shared_memory .SharedMemory (name_tsmb , create = True , size = 512 )
3778
3782
self .addCleanup (sms .unlink )
3779
3783
3780
3784
# Verify attributes are readable.
3781
- self .assertEqual (sms .name , 'test01_tsmb' )
3785
+ self .assertEqual (sms .name , name_tsmb )
3782
3786
self .assertGreaterEqual (sms .size , 512 )
3783
3787
self .assertGreaterEqual (len (sms .buf ), sms .size )
3784
3788
@@ -3798,12 +3802,12 @@ def test_shared_memory_basics(self):
3798
3802
self .assertEqual (sms .buf [0 ], 42 )
3799
3803
3800
3804
# Attach to existing shared memory segment.
3801
- also_sms = shared_memory .SharedMemory ('test01_tsmb' )
3805
+ also_sms = shared_memory .SharedMemory (name_tsmb )
3802
3806
self .assertEqual (also_sms .buf [0 ], 42 )
3803
3807
also_sms .close ()
3804
3808
3805
3809
# Attach to existing shared memory segment but specify a new size.
3806
- same_sms = shared_memory .SharedMemory ('test01_tsmb' , size = 20 * sms .size )
3810
+ same_sms = shared_memory .SharedMemory (name_tsmb , size = 20 * sms .size )
3807
3811
self .assertLess (same_sms .size , 20 * sms .size ) # Size was ignored.
3808
3812
same_sms .close ()
3809
3813
@@ -3821,7 +3825,7 @@ def test_shared_memory_basics(self):
3821
3825
'multiprocessing.shared_memory._make_filename' ) as mock_make_filename :
3822
3826
3823
3827
NAME_PREFIX = shared_memory ._SHM_NAME_PREFIX
3824
- names = ['test01_fn' , 'test02_fn' ]
3828
+ names = [self . _new_shm_name ( 'test01_fn' ), self . _new_shm_name ( 'test02_fn' ) ]
3825
3829
# Prepend NAME_PREFIX which can be '/psm_' or 'wnsm_', necessary
3826
3830
# because some POSIX compliant systems require name to start with /
3827
3831
names = [NAME_PREFIX + name for name in names ]
@@ -3843,17 +3847,17 @@ def test_shared_memory_basics(self):
3843
3847
# manages unlinking on its own and unlink() does nothing).
3844
3848
# True release of shared memory segment does not necessarily
3845
3849
# happen until process exits, depending on the OS platform.
3850
+ name_dblunlink = self ._new_shm_name ('test01_dblunlink' )
3851
+ sms_uno = shared_memory .SharedMemory (
3852
+ name_dblunlink ,
3853
+ create = True ,
3854
+ size = 5000
3855
+ )
3846
3856
with self .assertRaises (FileNotFoundError ):
3847
- sms_uno = shared_memory .SharedMemory (
3848
- 'test01_dblunlink' ,
3849
- create = True ,
3850
- size = 5000
3851
- )
3852
-
3853
3857
try :
3854
3858
self .assertGreaterEqual (sms_uno .size , 5000 )
3855
3859
3856
- sms_duo = shared_memory .SharedMemory ('test01_dblunlink' )
3860
+ sms_duo = shared_memory .SharedMemory (name_dblunlink )
3857
3861
sms_duo .unlink () # First shm_unlink() call.
3858
3862
sms_duo .close ()
3859
3863
sms_uno .close ()
@@ -3865,7 +3869,7 @@ def test_shared_memory_basics(self):
3865
3869
# Attempting to create a new shared memory segment with a
3866
3870
# name that is already in use triggers an exception.
3867
3871
there_can_only_be_one_sms = shared_memory .SharedMemory (
3868
- 'test01_tsmb' ,
3872
+ name_tsmb ,
3869
3873
create = True ,
3870
3874
size = 512
3871
3875
)
@@ -3879,7 +3883,7 @@ def test_shared_memory_basics(self):
3879
3883
# case of MacOS/darwin, requesting a smaller size is disallowed.
3880
3884
class OptionalAttachSharedMemory (shared_memory .SharedMemory ):
3881
3885
_flags = os .O_CREAT | os .O_RDWR
3882
- ok_if_exists_sms = OptionalAttachSharedMemory ('test01_tsmb' )
3886
+ ok_if_exists_sms = OptionalAttachSharedMemory (name_tsmb )
3883
3887
self .assertEqual (ok_if_exists_sms .size , sms .size )
3884
3888
ok_if_exists_sms .close ()
3885
3889
@@ -4084,10 +4088,12 @@ def test_shared_memory_ShareableList_basics(self):
4084
4088
self .assertEqual (sl .count (b'adios' ), 0 )
4085
4089
4086
4090
# Exercise creating a duplicate.
4087
- sl_copy = shared_memory .ShareableList (sl , name = 'test03_duplicate' )
4091
+ pid = os .getpid ()
4092
+ name_duplicate = self ._new_shm_name ('test03_duplicate' )
4093
+ sl_copy = shared_memory .ShareableList (sl , name = name_duplicate )
4088
4094
try :
4089
4095
self .assertNotEqual (sl .shm .name , sl_copy .shm .name )
4090
- self .assertEqual ('test03_duplicate' , sl_copy .shm .name )
4096
+ self .assertEqual (name_duplicate , sl_copy .shm .name )
4091
4097
self .assertEqual (list (sl ), list (sl_copy ))
4092
4098
self .assertEqual (sl .format , sl_copy .format )
4093
4099
sl_copy [- 1 ] = 77
0 commit comments