Hier ist mein Problem:
Ich möchte ein Array von Personen definieren und die Einträge dieses Arrays in einer for-Schleife ändern. Da ich auch gerne die Asymptotik der resultierenden Verteilung sehen möchte, möchte ich diese Simulation sehr oft wiederholen, daher verwende ich eine Matrix, um die verschiedenen Arrays in jeder Zeile zu speichern. Ich weiß, wie dies für Schleifen mit zwei zu tun:Python: Matrixzeile parallel bearbeiten
import random
import numpy as np
nobs = 100
rep = 10**2
steps = 10**2
dmoney = 1
state = np.matrix([[10] * nobs] * rep)
for i in range(steps):
for j in range(rep)
sample = random.sample(range(state.shape[1]),2)
state[j,sample[0]] = state[j,sample[0]] + dmoney
state[j,sample[1]] = state[j,sample[1]] - dmoney
Ich dachte, ich die Multiprozeß-Bibliothek benutzen, aber ich weiß nicht, wie es zu tun, weil in meinem einfachen Verstand, die Arbeiter die gleiche globale Matrix manipulieren parallel, was ich gelesen habe, ist keine gute Idee.
Also, wie kann ich das tun, um Berechnungen zu beschleunigen?
Vielen Dank im Voraus.
Ich verstehe nicht genau, sorry. Sollte ein Thread immer nur eine Spalte/Zeile oder alle Daten verändern? – Mijago
Es ist nicht klar, was Ihre i-Schleife tut, da Sie nicht i ref (wahrscheinlich verwenden Sie es in einem nicht gezeigten Code mit Ihrer Simulation, Verteilungsberechnungen). Allerdings denke ich, dass Sie alle Ihre j-Schleife in einem einzigen tun können Statement .. Aber ich habe nicht wirklich gedacht, dass durch (np.random.choice macht einen ähnlichen Job wie python.random.sample) – paddyg
Ich möchte die Matrix Zeile für Zeile bearbeiten, bis die gesamte Matrix geändert wird und diesen Schritt wiederholen mehrmals. Was ich nicht gepostet habe, war die Funktion für die Probengenerierung und einen Mittelungsschritt. Erstere ist ein Argument gegen die np.random.choice und letzteres ein Argument für die Bearbeitung von Zeile für Zeile, bis sich die gesamte Matrix geändert hat. – Daniel