Ceci est un mémo lorsque j'ai essayé l'informatique distribuée avec une bibliothèque Python appelée SCOOP sous Windows. SCOOP est une bibliothèque Python pour la distribution de tâches, qui est différente de l'outil de gestion de packages Windows Scoop. C'est compliqué. Étant donné que le parallélisme et la distribution sont des amateurs, je pensais qu'une personne formidable pouvait le faire, mais j'ai fait beaucoup de recherches, mais je n'ai pas pu obtenir le résultat, alors je vais le laisser pour qu'il n'y en ait pas qui fasse le même gaspillage que moi.
En exécution distribuée sur plusieurs PC par SCOOP, dans le processus
os.getpgrp()
Appelez la fonction. Ceci est uniquement disponible sous Unix et entraînera une erreur.
Si vous utilisez [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-on-server'Windows Subsystem for Linux '), vous pouvez utiliser getpgrp () dessus. Cependant, comme il sera exécuté sous Linux, il ne sera pas distribué sous Windows.
J'étais sur le point d'être dupe car il était possible de s'exécuter en parallèle au sein de mon PC, mais en d'autres termes
--host <host>
Si vous spécifiez, une erreur se produira.
Je vais laisser la procédure que j'ai essayée pour référence ci-dessous.
ssh Administrator @ <IP de l'autre instance>
ssh test
Host <Nom arbitraire>
HostName <Adresse IP de la destination de la connexion>
User <Tout utilisateur>
Port <Port que vous souhaitez utiliser>
IdentityFile <Le chemin de la clé privée dont vous disposez>
---Voici cet exemple---
Host test
HostName **.***.***.***
User Administrator
Port 22
IdentityFile C:/Users/Administrator/.ssh/id_rsa
map_doc.py
depuis le Manuel officielfurures.map (fonction que vous voulez distribuer, argument que vous voulez passer à la fonction ←)
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))
Si vous pouvez le faire jusqu'à présent, suivez le manuel officiel
python -m scoop -n 8 map_doc.py
Si tel est le cas, il sera exécuté en parallèle dans votre propre PC et réussira normalement.
python -m scoop -n 8 --host test map_doc.py
Si vous faites cela, vous obtiendrez l'erreur suivante et cela échouera.
L''erreur d'attribut: module'os 'n'a pas d'attribut'getpgrp'` à la fin de cette erreur est la cause de l'échec. Il n'y a rien qui ne soit pas là.
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'
Alors que j'étais sur le point d'abandonner, j'ai consulté d'autres personnes et j'ai découvert qu'il existe de nombreux modèles tels que «Si vous voulez faire de l'informatique distribuée, essayez de l'utiliser chez Spacon à l'avenir, alors j'écris des programmes sur l'hypothèse de Linux en premier lieu, je ne fais pas grand-chose sous Windows. J'ai reçu un commentaire comme "Yo". Cela semble être le cas. Je voulais le faire sur Windows cette fois parce que je voulais exécuter des programmes écrits en supposant que cela fonctionnerait sur un PC Windows en parallèle, mais cela ne peut pas être aidé car il n'y a pas de système d'exploitation qui n'a pas de fonctions.
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