Как использовать словари с потоками?
Есть несколько потоков, задача которых получать входные данные из одного большого словаря, и записывать измененные данные в другой глобальный словарь. При этом каждый поток работает со своей частью первого большого словаря. Проблема заключается в том, что после завершения работы этих двух потоков оказывается, что длинна второго словаря меньше чем у первого, откуда потоки берут данные! Т.е потоки почему то не записывают данные во второй словарь, при этом не возникает ошибок.
from threading import RLock, Thread
lock = RLock()
first_big_dict = { some_elements }
second_big_dict = {}
def thread_func(array):
with lock:
item_name = getting_item_name()
item_value = getting_item_value()
do_something()
with lock:
second_big_dict[item_name] = item_value
thread1 = Thread(target=thread_func, args=(piece_of_first_big_dict,))
thread2 = Thread(target=thread_func, args=(second_piece_of_big_dict,))
thread1.start()
thread2.start()
thread1.join()
thread2.join()
Я работаю с CPython и примерно так выглядит мой код. Я использую lock чтобы останавливать другие потоки на время записи в глобальный словарь по информации из интернета, но это также не помогло. Как использовать глобальные словари с многопоточностью и как можно исправить мою проблему?