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