Цель состояла в том, что другой поток изменил словарь, и эти изменения, которые будут доступны в исходном потоке.
Код: Выделить всё
import multiprocessing as mp
import sys
def my_func(result: dict):
print(f'variable address at worker: {hex(id(result))}', file=sys.stderr)
result["test"] = "test"
print(f'{result}', file=sys.stderr)
result = {}
print(f'variable address at main thread: {hex(id(result))}', file=sys.stderr)
my_worker = lambda : my_func(result)
# execution at another Thread
p = mp.Process(target=my_worker)
p.start()
p.join()
print(f'result at main thread after execution: {result}', file=sys.stderr)
# manual execution
my_worker()
print(f'result at main thread after manual execution: {result}', file=sys.stderr)
print(sys.version)
< /code>
А вывод: < /p>
variable address at main thread: 0x6ffffff39580
variable address at worker: 0x6ffffff39580
{'test': 'test'}
result at main thread after execution: {}
result at main thread after manual execution: {'test': 'test'}
3.9.16 (main, Mar 8 2023, 22:47:22)
[GCC 11.3.0]
Что я делаю неправильно?
Подробнее здесь: https://stackoverflow.com/questions/797 ... nges-after