万里长征第一步:Python进程池的一点点小坑

时间:2023-03-08 19:55:52
万里长征第一步:Python进程池的一点点小坑
# -*- coding: utf- -*-
"""
Created on Thu Mar :: @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() for url in url_list:
#去进程池中获取一个线程,子进程程去执行fetch_request方法
f = pool.submit(fetch_request,url)
#time.sleep()
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方法执行的子进程的信息。