Dies ist ein Memo, als ich unter Windows versucht habe, verteiltes Rechnen mit einer Python-Bibliothek namens SCOOP durchzuführen. SCOOP ist eine Python-Bibliothek für die Aufgabenverteilung, die sich vom Windows-Paketverwaltungstool Scoop unterscheidet. Es ist kompliziert. Da Parallelität und Verteilung Amateure sind, glaubte ich, dass eine großartige Person dies tun könnte, aber ich habe viel recherchiert, aber ich konnte das Ergebnis nicht erzielen, also lasse ich es so, dass es keine gibt, die die gleichen verschwenderischen Schritte wie ich unternehmen.
Bei verteilter Ausführung auf mehreren PCs durch SCOOP dabei
os.getpgrp()
Rufen Sie die Funktion auf. Dies ist nur unter Unix verfügbar und führt zu einem Fehler.
Wenn Sie [Windows-Subsystem für Linux](https://docs.microsoft.com/en-us/windows/wsl/install-on-server'Windows Subsystem für Linux ') verwenden, können Sie getpgrp () verwenden. Da es jedoch unter Linux ausgeführt wird, wird es nicht unter Windows verteilt.
Ich wollte mich täuschen lassen, weil es möglich war, parallel auf meinem PC zu arbeiten, aber mit anderen Worten
--host <host>
Wenn Sie angeben, tritt ein Fehler auf.
Ich werde das Verfahren, das ich versucht habe, als Referenz unten verlassen.
ssh Administrator @ <IP der anderen Instanz>
ssh test
Host <Beliebiger Name>
HostName <IP-Adresse des Verbindungsziels>
User <Jeder Benutzer>
Port <Port, den Sie verwenden möchten>
IdentityFile <Der Pfad des privaten Schlüssels, den Sie haben>
---Das Folgende ist dieses Beispiel---
Host test
HostName **.***.***.***
User Administrator
Port 22
IdentityFile C:/Users/Administrator/.ssh/id_rsa
map_doc.py
aus Official Manualfurures.map ausführen möchten (Funktion, die Sie verteilen möchten, Argument, das Sie an die Funktion ← übergeben möchten)
map_doc.py
from __future__ import print_function
from scoop import futures
def helloWorld(value):
return "Hello World from Future #{0}".format(value)
if __name__ == "__main__":
returnValues = list(futures.map(helloWorld, range(16)))
print("\n".join(returnValues))
Wenn Sie dies bisher tun können, folgen Sie dem offiziellen Handbuch
python -m scoop -n 8 map_doc.py
In diesem Fall wird es parallel auf dem eigenen PC ausgeführt und ist normal erfolgreich.
python -m scoop -n 8 --host test map_doc.py
Wenn Sie dies tun, wird der folgende Fehler angezeigt, der fehlschlägt.
Das Attributfehler: Modul'os 'hat kein Attribut'getpgrp'
am Ende dieses Fehlers ist die Ursache des Fehlers. Es gibt nichts, was nicht da ist.
b'Traceback (most recent call last):\r\n File "C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py", line 197, in _run_module_as_main\r\n return _run_code(code, main_globals, None,\r\n File "C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py", line 87, in _run_code\r\n exec(code, run_globals)\r\n File "C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\scoop\\broker\\__main__.py", line 65, in <module>\r\n sys.stdout.write(str(os.getpgrp()) + "\\n")\r\nAttributeError: module \'os\' has no attribute \'getpgrp\'\r\n'
Als ich aufgeben wollte, habe ich mich mit anderen Leuten beraten und festgestellt, dass es viele Muster gibt, wie z. B. "Wenn Sie verteiltes Computing betreiben möchten, versuchen Sie es in Zukunft bei Spacon. Daher schreibe ich Programme unter der Annahme von Linux. Unter Windows mache ich nicht viel." Ich habe einen Kommentar wie "Yo" erhalten. Das scheint der Fall zu sein. Ich wollte es diesmal unter Windows tun, weil ich Programme ausführen wollte, die unter der Annahme geschrieben wurden, dass es parallel auf einem Windows-PC ausgeführt wird, aber es kann nicht geholfen werden, da es kein Betriebssystem gibt, das keine Funktionen hat.
https://scoop.readthedocs.io/en/0.7/index.html https://docs.python.org/ja/3/library/os.html http://fx-kirin.com/python/python-scoop/ https://www.server-world.info/query?os=Windows_Server_2019&p=ssh&f=3