Ich habe Probleme mit SharedMemory () in Python 3.12.0, es ist nicht ordnungsgemäß veröffentlicht. Ich benutze den folgenden Kontext -Manager, um Share -Speichersegmente zu verarbeiten: < /p>
@contextmanager
def managed_shm(name=None, size=0, create=False):
shm = None
try:
shm = SharedMemory(create=create, name=name, size=size)
yield shm
finally:
if shm:
shm.close()
if create:
shm.unlink()
< /code>
Verfahren zum Schreiben des gemeinsamen Speichers im Thread. In einem anderen Prozess lese ich Daten aus dem gemeinsamen Speicher mit dieser Funktion: < /p>
def test_shm(maxok=10):
prev = None
errors=0
ok=0
reads = 0
with managed_shm(name=SocketServer.shmname) as shm: #SocketServer.shmname='mqltick4'
while True:
try:
cur = shm.buf.tobytes()
if cur != prev:
reads +=1
ok+=1
prev=cur
if reads % 100 == 0:
print(reads, ok, errors, errors/reads if reads >0 else None)
if ok >= maxok: break
except ValueError:
errors+=1
print('errors', errors)
return reads, ok, errors, errors/reads if reads >0 else None
< /code>
Es funktioniert einwandfrei, aber beim Interpreter -Beenden erhalte ich die folgende Warnung: < /p>
Python-3.12.0/Lib/multiprocessing/resource_tracker.py:224: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown
warnings.warn('resource_tracker: There appear to be %d '
< /code>
Zweiter Versuch, den Code auszuführen, führt zu einem Fehler: < /p>
File "/home/jb/opt/pythonsrc/Python-3.12.0/Lib/multiprocessing/shared_memory.py", line 104, in __init__
self._fd = _posixshmem.shm_open(
^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/mqltick4'
< /code>
Programm -Aktualisierung der gemeinsam genutzten Speicher funktioniert einwandfrei. Frage Stimmt etwas mit meinem Code nicht oder ich habe einen Python 3.12.0 -Fehler getroffen?
Gemeinsame Speicherlecks in Python 3 ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post