# -*- coding: utf-8 -*- """ Created on Thu Mar 14 11:02:06 2019 @author: lilide """ #import time import requests from concurrent.futures import ProcessPoolExecutor def fetch_request(url): result = requests.get(url) #print(result.text) return result.text def main(): url_list = [ 'http://www.baidu.com', 'http://www.bing.com', 'http://www.cnblogs.com/' ] pool = ProcessPoolExecutor(1) for url in url_list: #去进程池中获取一个线程,子进程程去执行fetch_request方法 f = pool.submit(fetch_request,url) #time.sleep(1) print(f.done()) print(f.result()) pool.shutdown(True) if __name__ == '__main__': main()
上面的例子是进程池的应用,对于线程池不做深入研究了,这里也只是针对一个小问题来说明,就是进程池中是不能调用print打印显示输出的,需要将数据传回至主进程打印输出。
我使用的是Spyder IDLE不能显示子进程(调用Process的子进程)打印的信息。
解决办法1:直接把.py文件拖入cmd命令窗口,用cmd命令窗口运行Python程序;
解决办法2:安装PyCharm,在PyCharm中运行;
以上两种方法都不能打印进程池Pool调用submit方法执行的子进程的信息。