random .sample (набор или список или массив Numpy, Nsample) очень быстрый, но мне неясно, хотите ли вы что-нибудь подобное:
import random
Setsize = 10000
Samplesize = 100
Max = 1 << 20
bigset = set( random.sample( xrange(Max), Setsize )) # initial subset of 0 .. Max
def calc( aset ):
return set( x + 1 for x in aset ) # << your code here
# sample, calc a new subset of bigset, add it --
for iter in range(3):
asample = random.sample( bigset, Samplesize )
newset = calc( asample ) # new subset of 0 .. Max
bigset |= newset
Выможно использовать массивы Numpy или bitarray вместо set
, но я ожидаю, что время в calc () будет доминировать.
Каковы ваши Setsize и Samplesize?