2016-07-31 10 views
-1

내 모든 프로세스가 다른 함수에서 시작된 경우 concurrent.futures를 사용하여 문제가 없습니다. 그러나 다른 매개 변수를 사용하여 동일한 함수를 호출하려면 구문을 올바르게 처리 할 수 ​​없습니다. 이것은 오류가동일한 함수를 두 번 호출하는 Python concurrent.futures

tasks = ((serial_port_local, serial_options_local, serial_port_remote, serial_options_remote, "local"), 
(serial_port_remote, serial_options_remote, serial_port_local, serial_options_local, "remote")) 

for task in zip(tasks, executor.map(serial_cross_over, tasks)): 
    print (task) 

하지만 난 그것을 grok 수 없습니다 : 이것은 내가 지금까지 가지고 있지만 작동하지 않는 것입니다 사실

TypeError: serial_cross_over() missing 4 required positional arguments: 'receive_serial_options', 'send_serial_port', 'send_serial_options', and 'source' 

은 정말 grok 수없는 이유는 복잡 조금도. 난 그냥 할 수 없어야합니까 :

하지만 작동하지 않습니다. 두 번째 제출시 프로그램이 중단됩니다. 왜?

답변

0

serial_cross_over 4 개 인수를 (내가 틀렸다면 정정 해줘) 소요 보인다 .MAP 그래서, 어쩌면이 대답 한 번 봐 걸릴 때 당신이 그들을 제공하지 않습니다에 관해서는 Pass multiple parameters to concurrent.futures.Executor.map?

tasks = ((serial_port_local, serial_options_local, serial_port_remote, serial_options_remote, "local"), (serial_port_remote, serial_options_remote, serial_port_local, serial_options_local, "remote")) 

for task in zip(executor.map(lambda p: f(*p), tasks)): 
    pass 

을 executor.submit가 예상대로 작동하지 않는 이유는 무엇보다 자세히 설명하지 못합니다. 이

with ThreadPoolExecutor(max_workers=1) as executor: 
    future = executor.submit(some_function, parameter1) 
    print(future.result()) 
을? :처럼 시도 되세요