Je suis à la recherche d'un moyen d'alléger mon code fileté.simplifier le filetage en python
Il y a beaucoup d'endroits dans mon code où je fais quelque chose comme:
for arg in array:
t=Thread(lambda:myFunction(arg))
t.start()
i.e. exécutant la même fonction, chaque fois que des paramètres différents, dans les discussions. Ceci est bien sûr une version simplifiée du code réel, et généralement le code à l'intérieur de la boucle for
est ~ 10-20 lignes de long, qui ne peut être rendu simple en utilisant une fonction auxiliaire comme myFunction
dans l'exemple ci-dessus (avait ça a été le cas, j'aurais pu utiliser un pool de threads).
En outre, ce scénario est très, très commun dans mon code, donc il y a des tonnes de lignes que je considère comme redondantes. Cela me aiderait beaucoup si je ne l'ai pas besoin de gérer tout ce code passe-partout, mais être capable de faire quelque chose comme:
for arg in array:
with threaded():
myFunction(arg)
-à-dire en quelque sorte prend chaque ligne de code à l'intérieur et l'exécute dans un fil séparé.
Je sais que les gestionnaires de contexte ne sont pas censés être utilisés dans de telles situations, que c'est probablement une mauvaise idée et qu'il faudra un bidouillage moche, mais néanmoins - peut-il être fait, et comment?
Je me demande pourquoi vous en avez besoin. Vous * êtes * conscient du fait que les threads Python ne fonctionnent pas en parallèle sur plusieurs cœurs/processeurs, n'est-ce pas? –
@Eli: Son code ne pourrait pas être lié à l'IO, n'est-ce pas? :) –
@Mark: en fait, c'est pourquoi j'ai demandé. Son cas d'utilisation ne semble pas lié à l'IO. Il pourrait être, donc je me demande ce que c'est - toujours prêt à apprendre, vous savez :-) –