Моя цель - провести сравнение между двумя разными состояниями класса Rubiks Cube, которое само по себе просто. Проблема возникает, когда вам нужно вычислить что -то по порядку 900 миллионов сравнений, чтобы пройти все из них. Для справки, мы сравниваем, что 2 кубика из 2 разных списков точно одинаковы. < /P>
Решения, которые я пробовал до сих пор, следующие: < /p>
[*] Bruteforce Comparrisons < /li>
Объект пула с использованием многопроцессов (для множества множества) < /li>
Список более простых операций для мультипроцесса пула (вызвала проблему с памятью)
Настройка количества процессов пула и/или рассыпать PrettyPrint-Override ">print("Beginning pooling, with a new pool for each start pair. This may take a while...")
final_algs=[]
startcomparisons=0
for pairA in startcube_pairs:
comparisonlist=[]
startcomparisons+=1
print(f"Starting comparison block {startcomparisons}/{len(startcube_pairs)}")
for pairB in solvedcube_pairs:
comparisonlist.append([pairA, pairB])
# now we have a small list of comparisons to make, and we will start comparing what we currently have. If we just put all possible pairs in a list, we encounter a memory problem.
with Pool() as pool:
results = pool.imap_unordered(comparecubes_returnsolution_ifexists, comparisonlist, chunksize=4096)
# imap_unordered means the processes will not necessarily start in order, which is fine since we don't care what order we get algorithms out
for result in results: # this portion existing shows all the subprocesses in the task manager so we will keep it
if result != None:
print(f"Found: [{alg_as_str(result)}] length: {len(result)}")
final_algs.append(result)
else: pass
print(f"Finished comparison block {startcomparisons}/{len(startcube_pairs)}\n\n")
< /code>
С этой версией кода процесс Python и его подпроцессы в совокупности используют только 7-9% ЦП, причем большинство работников из пула используют менее 0,5% моего процессора. Моя цель состоит в том, что если бы я смог лучше использовать многопроцесскую, я смог бы использовать целевую 40-60% моего процессора при выполнении этих сравнений. Если это так, могу ли я позволить Python выделять большую мощность обработки, не набрасывая память моей системы?>
Подробнее здесь: https://stackoverflow.com/questions/794 ... omparisons
Как я могу использовать многопроцесскую в Python для выполнения миллионов сравнений? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как я могу использовать многопроцесскую в Python для выполнения миллионов сравнений?
Anonymous » » в форуме Python - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как я могу безопасно использовать многопроцесскую в приложении Django?
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Оптимизация многокритериальных сравнений с большими кадрами данных в Python
Anonymous » » в форуме Python - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-