小村落落

博客园 首页 新随笔 联系 订阅 管理
# -*- 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方法执行的子进程的信息。

posted on 2019-03-15 10:45  小村落落  阅读(86)  评论(0编辑  收藏  举报