$m1t
			  Июль 17, 2009 01:09:21
		 	 
			
				Есть набор файлов f_1,…f_N, N~10^6, в каждом из которых есть набор id-шек. id- это некоторое целое число от 1 до 10^6–10^7.  В каждом файле относительно мало id-шек, не меньше 5 штук,  в среднем около 100, максимум 10^4. 
Так вот, теперь вопрос – как построить словарь в котором по каждой id-шке будут храниться номера файлов, в которых она содержится? 
Наивный подход – считать все в словарь и циклом строить новый, дико тормозит, хотя бы потому, что этот словарь не лезет в оперативку. 
Что в этом случае можно сделать?
			
		 
		
			
			  PooH
			  Июль 17, 2009 07:36:01
		 	 
			
				можно попробывать использовать встроенный модуль anydbm, интерфейс практически такой же как и у словаря, но данные хранит в файле на диске
			
		 
		
			
			  Ed
			  Июль 17, 2009 13:44:01
		 	 
			
				Поместится ли в память результат? Если да, то просто читайте из файлов последовательно по одному файлу за раз и заполняйте словарь-результат. Если не лезет, то используйте какую-нить СУБД. Алгоритм тот же, только вместо словаря пишите результат в базу. Если читать по одному файлу за раз медленно, то читайте по несколько параллельно.