Простыми словами это происходит потому, что в python все работает по ссылке, поэтому, когда вы создаете список списков таким образом, вы в основном получаете такие проблемы.
Чтобы решить вашу проблему, вы можете сделать либо один из них: 1. Используйте документацию numpy array для numpy.empty 2. Добавьте список, когда вы попадаете в список. 3. Вы также можете использовать словарь, если хотите
Вы вызываете свою функцию на месте и даете результат многопроцессорной обработке. Вы должны передать функцию как вызываемую и аргументы отдельно:
multiprocessing.Process(target=per1, args=(x,))
Во-первых, отметим некоторое понимание того, какая математическая задача будет полезна для оптимизации, которая в противном случае может ускорить выполнение. Кратко рассмотрев, я могу определить, что есть несколько вещей, в том числе:
"steps 1"
в solve.txt, это никогда не может быть так, поскольку S равно как минимум 2 (или более ) и вы проверяете, если steps == S
# since once 'S' isn't found, n >= S will not be in solve.txt
S = 2
while ("steps " + str(S)) in open('solve.txt').read() and S < 8:
S += 1
.start()
только когда [ 115] и y = 2002
. Это немедленно приводит к тому, что значение result
становится равным 0, и, следовательно, результаты не сохраняются (длина 0 равна 1), возвращаясь без ввода-вывода. Вы хотели бы сделать что-то вроде этого (не проверено): def driver(start, end, step):
for i in range(start, end+1, step):
per1(i)
p1 = multiprocessing.Process(target=driver, args=(1, 2000, 2))
p2 = multiprocessing.Process(target=driver, args=(0, 2000, 2))
p1.start()
p2.start()
p1.join()
p2.join()