Maison  >  Article  >  développement back-end  >  Comment transmettre un seul paramètre et plusieurs paramètres au pool de threads Python ThreadPoolExecutor

Comment transmettre un seul paramètre et plusieurs paramètres au pool de threads Python ThreadPoolExecutor

王林
王林avant
2023-04-19 19:22:042424parcourir

    Pool de threads Python ThreadPoolExecutor, passant un seul paramètre et plusieurs paramètres

    Il s'agit du pool de threads passant un seul paramètre

    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()

    Ce qui suit passe plusieurs paramètres

    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

    python passe dans plusieurs paramètres ThreadPoolExecutor.submit support multi-paramètres

    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!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer