2016-09-15 69 views
0

我正在尝试多线程在Python 3中,但我不明白为什么我的示例将无法工作。它应该只是打印数字,并作为确认再次打印数字。 但它会遇到很多错误。Python简单ProcessPoolExecutor示例不会工作

代替
from concurrent import futures 

def print_me(num): 
    print('Zahl: ' + str(num)) 
    return num 


def say_bye(job): 
    num = job.result() 
    print(str(num) + ' is out!') 


def test_multi(): 
    num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] 
    with futures.ProcessPoolExecutor(max_workers=4) as executor: 
     for num in num_list: 
      job = executor.submit(print_me, num) 
      job.add_done_callback(say_bye(job)) 

test_multi() 

从理论上说,:

for num in num_list: 
    job = executor.submit(print_me, num) 
    job.add_done_callback(say_bye(job))` 

我可以利用这一点,还是?

executor.map(print_me, num_list) 

回答

0

要获取该代码运行我只需要添加:

**if __name__ == "__main__":** 
    test_multi()