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())
가장 중요한 것은 pool.submit(lambda cxp: test (*cxp), (j ,k))
이 코드 줄을 분리하여 살펴봐야 합니다
첫 번째는 익명 함수입니다:lambda cxp:test(*cxp) 이것이 첫 번째 단계입니다
즉, cxp 매개변수를 테스트에 전달
두 번째 단계는 submit(lambda cxp:test(cxp),(j,k))
sumbit 메서드에서 두 개의 매개변수를 전달해야 하며, 첫 번째는 함수입니다. 두 번째는 이 함수의 매개변수입니다
지금은 익명 함수가 첫 번째 매개변수이고 그 다음으로 (j,k)가 두 번째 매개변수이므로 이 매개변수는 함수에 전달됩니다. 주어진 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)
위 내용은 Python 스레드 풀 ThreadPoolExecutor에 단일 매개변수와 다중 매개변수를 전달하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!