New submission from Marc Guetg <[email protected]>:
It seems like sharing a string over processes is not possible.
#!/usr/bin/env python3
import multiprocessing
import threading
import ctypes
def fun(share_c, share_s, set_c, set_s, name):
print(f'{name}: {share_c.value}; {share_s.value}')
share_c.value = set_c
share_s.value = set_s
print(f'{name}: {share_c.value}; {share_s.value}')
if __name__ == '__main__':
share_c = multiprocessing.Value(ctypes.c_wchar, 'a')
share_s = multiprocessing.Value(ctypes.c_wchar_p, 'aa')
print(f'pre_thread: {share_c.value}; {share_s.value}')
thread = threading.Thread(target=fun, args=(share_c, share_s,
'b', 'bb', 'thread'))
thread.start()
thread.join()
print(f'post_thread: {share_c.value}; {share_s.value}')
process = multiprocessing.Process(target=fun, args=(share_c,
share_s, 'c', 'cc', 'process'))
process.start()
process.join()
print(f'post_process: {share_c.value}', end='; ')
print(share_s.value) # <--- Blows here
produces:
pre_thread: a; aa
thread: a; aa
thread: b; bb
post_thread: b; bb
process: b; bb
process: c; cc
post_process: c; Traceback (most recent call last):
File "test2.py", line 30, in <module>
print(share_s.value) # <--- Blows here
File "<string>", line 5, in getvalue
ValueError: character U+ff92f210 is not in range [U+0000; U+10ffff]
Where the character value in the error message is different every time. To me
this seems like a bug as it is working properly with threads as well as single
characters. (Maybe relevant question also here:
https://stackoverflow.com/questions/47763878/how-to-share-string-between-processes?noredirect=1#comment82492062_47763878)
For the case it matters:
Python 3.6.1 (Anaconda 4.4.0) on RHEL 6
----------
components: Library (Lib), Unicode
messages: 308144
nosy: ezio.melotti, magu, vstinner
priority: normal
severity: normal
status: open
title: Value error for string shared memory in multiprocessing
type: crash
versions: Python 3.6
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue32291>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com