Alors ces derniers jours, j'ai essayé de comprendre comment commencer à avoir du fil et j'ai finalement réussi à le faire fonctionner! Le problème que je suis maintenant est que je veux qu'ils courent simultanément. J'entends différentes choses telles que GIL ne fonctionnera pas. Certains disent que cela fonctionne avec multiprocessing
etc etc .. Cependant, je me suis retourné ici pour voir si c'est possible et quel est le dire de le faire?Python - Transformez le thread en multitraitement
Fondamentalement, mon code semble en ce moment comme celui-ci:
Le code avec filetage
def start(config):
NameUrl = config["Url"]
myNote = config["My-Note"]
checkoutNames(Nameurl, MyNote)
if __name__ == '__main__':
with open('config.json', 'r', encoding='UTF-8') as json_data:
config = json.load(json_data)
threads = []
for i, e in enumerate(config):
threads.append(threading.Thread(target=start, args=(config[i] or e)))
Comme vous pouvez le voir dans if __name__ == '__main__':
C'est où le fil est à ce moment. Cependant ce que cela fait en ce moment est qu'il fait d'abord le fil 1, quand c'est fait il tourne au fil 2 et continue comme ça et mon souhait est de le tourner simultanément/simultanément si c'est même possible?
EDIT
CODE
if __name__ == '__main__':
with open('config.json', 'r', encoding='UTF-8') as json_data:
config = json.load(json_data)
jobs = []
for i, e in enumerate(config):
c = (config[i] or e)
p = multiprocessing.Process(target=start, args=(c))
jobs.append(p)
p.start()
L'erreur iam obtenir le code ci-dessus:
[<Process(Process-1, initial)>]
<Process(Process-1, initial)>
{'Email': '[email protected]', 'PersonNumber': '4234', 'ZipCode': '1241234', 'Name': 'Guess', 'LastName': 'TheyKnow'}
[<Process(Process-1, started)>, <Process(Process-2, initial)>]
<Process(Process-2, initial)>
{'Email': '[email protected]', 'PersonNumber': '1234', 'ZipCode': '56431', 'Name': 'Stack', 'LastName': 'Overflow'}
Process Process-1:
Traceback (most recent call last):
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 249, in _bootstrap
self.run()
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 93, in run
self._target(*self._args, **self._kwargs)
TypeError: start() takes 1 positional argument but 16 were given
Process Process-2:
Traceback (most recent call last):
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 249, in _bootstrap
self.run()
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 93, in run
self._target(*self._args, **self._kwargs)
TypeError: start() takes 1 positional argument but 16 were given
Oui, multitraitement fonctionnera simultanément aussi longtemps que votre CPU a les cœurs pour y faire face. Essayez d'utiliser 'import multiprocessing' et' multiprocessing.Process' et voyez si vous pouvez le faire fonctionner. – quamrana
Si votre travail se résume à utiliser 'requests' (ou équivalent) pour récupérer des données, vous ne devriez pas avoir de problèmes avec le GIL. Le GIL n'affecte que le code gourmand en CPU qui effectue les calculs réels. Quel est le problème concret que vous résolvez? – user4815162342
@quamrana Le seul problème avec iam maintenant est d'activer '' 'threads.append (threading.Thread (target = start, args = (config [i] ou e))))' '' dans le multitraitement. Avez-vous une idée? Est-ce que cela change juste le threading. Thread dans '' '' multiprocessing.Process'''? – WeInThis