Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menghantar parameter tunggal dan berbilang parameter ke kolam benang python ThreadPoolExecutor

Bagaimana untuk menghantar parameter tunggal dan berbilang parameter ke kolam benang python ThreadPoolExecutor

王林
王林ke hadapan
2023-04-19 19:22:042425semak imbas

    kumpulan benang ular sawa ThreadPoolExecutor, melepasi parameter tunggal dan berbilang parameter

    Ini ialah kumpulan benang yang melepasi parameter tunggal

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

    Berikut adalah untuk lulus berbilang parameter

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

    Perkara utama ialah pool.submit(lambda cxp:test(*cxp),(j,k))

    Barisan kod ini memerlukan untuk dibongkar Lihat

    Yang pertama ialah fungsi tanpa nama: lambda cxp:test(*cxp) Ini adalah langkah pertama

    Ini bermakna: lulus parameter cxp ke dalam ujian.

    Langkah kedua ialah serahkan(lambda cxp:test(cxp),(j,k))

    Kaedah sumbit memerlukan dua parameter ialah fungsi, dan yang kedua ialah parameter fungsi ini

    Fungsi tanpa nama tadi ialah parameter pertama, dan kemudian (j, k) ialah parameter kedua Parameter ini akan dihantar ke fungsi , jadi (j, k) memberikan cxp

    kumpulan benang ular sawa untuk dihantar dalam berbilang parameter ThreadPoolExecutor.serahkan sokongan berbilang parameter

    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)

    Atas ialah kandungan terperinci Bagaimana untuk menghantar parameter tunggal dan berbilang parameter ke kolam benang python ThreadPoolExecutor. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam