Помогите разобраться. Пробую писать многопоточно в монгу, данные пишутся, а вот потоки не освобождаются :(
def writer(ip,data):
conn = pymongo.Connection('localhost', 27017)
db = conn['mydb']
coll = db[ip]
write_data = {data['timestamp']: data['count']}
coll.insert(write_data)
if args.verbose:
print write_data
def create_data(ip,lock):
dump = get_dump(ip)
writer(ip,parse_dump( dump))
lock.release()
def main():
if args.ip is not None:
create_data(args.ip, None)
else:
ip_list = open(ip_file,"r").readlines()
lock_list = []
for ip in ip_list:
# Создаем новый объект блокировки. Изначально блокировка в состоянии False.
lock = thread.allocate_lock()
# Блокируем объект
lock.acquire()
# Запоминаем блокировку
lock_list.append(lock)
# Запускаем новый поток и выполняем в нем функцию
thread.start_new_thread(create_data, (ip, lock))
# Ожидаем завершения всех потоков
while(any([l.locked() for l in lock_list])):
print len(lock_list)
time.sleep(2)
main()
После исполнения записи, len(lock_list) не меняется, почему не отрабатывает lock.release() ? Пробовал его закомментировать, ситуация не изменилась, как-будто я его не в том месте вызываю.