За исключением проблемы __main__
, ваш способ использования простых чисел в качестве глобального списка, похоже, не работает. Я импортировал очередь из многопроцессорной обработки и использовал primes = Queue()
и
size = primes.qsize()
print([primes.get() for _ in range(size)])
primes.close()
в основной функции и primes.put(num)
в своей функции. Я не знаю, лучший ли это способ, для меня это работает, но если N> 12000, консоль зависает. Кроме того, в этом случае использование многопроцессорной обработки на самом деле немного медленнее, чем одного процесса.
Если вы стремитесь к скорости, вы можете тестировать только до квадрата root числа, что экономит примерно половину времени. Есть много оптимизаций, которые вы можете сделать. Если вы тестируете огромные числа, вы можете использовать алгоритм Рабина-Миллера. http://inventwithpython.com/cracking/chapter22.html