python多线程无法使用多核处理器,所以这里记录如何使用多进程。
    参考文章

    一般使用:apply_async 和 map_async,不阻塞执行。

    1. # -*- coding: utf-8 -*-
    2. import multiprocessing
    3. import time
    4. def func(msg):
    5. print('msg: ', msg)
    6. time.sleep(1)
    7. print('********')
    8. return 'func_return: %s' % msg
    9. if __name__ == '__main__':
    10. # apply_async
    11. print('\n--------apply_async------------')
    12. pool = multiprocessing.Pool(processes=4)
    13. results = []
    14. for i in range(10):
    15. msg = 'hello world %d' % i
    16. result = pool.apply_async(func, (msg, ))
    17. results.append(result)
    18. print('apply_async: 不堵塞')
    19. pool.close() # 关闭进程池,表示不能再往进程池中添加进程,需要在join之前调用
    20. pool.join() # 等待进程池中的所有进程执行完毕
    21. for i in results:
    22. if i.ready(): # 进程函数是否已经启动了
    23. if i.successful(): # 进程函数是否执行成功
    24. print(i.get()) # 进程函数返回值
    25. args = [1, 2, 4, 5, 7, 8]
    26. # map_async
    27. print('\n--------map_async------------')
    28. pool = multiprocessing.Pool(processes=5)
    29. result = pool.map_async(func, args)
    30. print('ready: ', result.ready())
    31. print('不堵塞')
    32. result.wait() # 等待所有进程函数执行完毕
    33. if result.ready(): # 进程函数是否已经启动了
    34. if result.successful(): # 进程函数是否执行成功
    35. print(result.get()) # 进程函数返回值