from concurrent.futures import ThreadPoolExecutor,as_completed def test(a): print(a) qq = {"a":"1","b":"2","c":"3"} with ThreadPoolExecutor() as pool: for j ,k in qq.items(): res = pool.submit(test,j) kk = res.result()
from concurrent.futures import ThreadPoolExecutor,as_completed def test(a,b): print(a,b) qq = {"a":"1","b":"2","c":"3"} with ThreadPoolExecutor() as pool: for j ,k in qq.items(): res = pool.submit(lambda cxp:test(*cxp),(j ,k)) last= res.result())
L'essentiel est pool.submit(lambda cxp : test (*cxp), (j ,k))
Cette ligne de code doit être démontée pour la regarder
La première est la fonction anonyme : lambda cxp:test(*cxp) C'est la première étape
Cela signifie : Passez le paramètre cxp à tester
La deuxième étape est submit(lambda cxp:test(cxp),(j,k))
La méthode sumbit nécessite de passer deux paramètres, la première est Function , le deuxième est le paramètre de cette fonction
Pour l'instant, la fonction anonyme est le premier paramètre, et ensuite (j,k) est le deuxième paramètre. Ce paramètre doit être transmis à la fonction, donc (j,k) est donné le pool de threads cxp
from concurrent.futures import ThreadPoolExecutor,as_completed def doFileParse(filepath,segment,wordslist): print(filepath) print(segment) #调用方法 #实质就是通过lambda表达式过渡。传入的参数是一个,但是通过lambda表达多后拆散为多个传入。这是很巧妙的方法,实际 就是 *p 这个表达式。 args =[filepath,thu1,Words] newTask=executor.submit(lambda p: doFileParse(*p),args)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!