吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2068|回复: 11
收起左侧

[已解决] 【破案了】python多进程为何会产生僵尸进程?如何处理?

[复制链接]
We. 发表于 2020-11-5 10:14
本帖最后由 We. 于 2020-11-6 15:53 编辑

这个问题破案了昂。代码没问题的,任务也在跑,是ppt网站的服务器的问题,附上效果图。
微信截图_20201106155206.png
速度还行40多秒。我觉得还能更快。



之前研究python爬虫多进程批量下载ppt,全部代码详见https://www.52pojie.cn/thread-1291914-1-1.html


代码运行倒是没问题也不报错,关键是下载一部任务之后就不动了。
后来我把下载链接单独提取出来测试如下图:
ppt流量.png


代码刚跑起来的时候是有流量的,每个进程都在干活。过了一段时间以后如下图:
ppt流量停止了.png
流量没了! 这是为啥?任务还没跑完为啥就卡在这了???
请各位指正!


测试代码如下:
[Python] 纯文本查看 复制代码
from time import perf_counter
import requests
import multiprocessing

def RequestsDX(url):
    headers = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                       'Chrome/86.0.4240.111 Safari/537.36 Edg/86.0.622.51',
        'Accept'     : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,'
                       'application/'
                       'signed-exchange;v=b3;q=0.9'
    }
    response = requests.get(url=url, headers=headers)
    response.encoding = 'utf-8'
    return response

def down_load(download_list): # 开始下载
    response = RequestsDX(download_list[1])
    print('=' * 100)
    print('正在下载', download_list[0])
    with open(r'D:\ppt\%s.zip' % download_list[0], 'wb') as f :
        for chunk in response.iter_content(chunk_size=1024) :
            f.write(chunk)
    print('下载完成')


if __name__ == '__main__':
    download_list = [
        ('通用工作述职汇报PPT模板', 'http://www.youpinppt.com/soft/201013/1-201013195921.zip'),
        ('大气黑灰工作述职报告PPT模板', 'http://www.youpinppt.com/soft/200905/1-200Z5205113.zip'),
        ('新员工转正述职报告PPT模板', 'http://www.youpinppt.com/soft/200816/1-200Q6052914.zip'),
        ('炫彩烟雾水彩总结述职PPT模板', 'http://www.youpinppt.com/soft/200707/1-200FH33044.zip'),
        ('极简试用期转正述职报告PPT模板', 'http://www.youpinppt.com/soft/200623/1-200623103147.zip'),
        ('极简工作述职报告PPT模板', 'http://www.youpinppt.com/soft/200528/1-20052Q11T6.zip'),
        ('极简述职工作报告PPT模板', 'http://www.youpinppt.com/soft/200426/1-200426210042.zip'),
        ('办公桌面述职报告PPT模板', 'http://www.youpinppt.com/soft/200331/1-200331100H5.zip'),
        ('大气实用述职报告PPT模板', 'http://www.youpinppt.com/soft/200316/1-200316055252.zip'),
        ('立体岗位竞聘述职报告PPT模板', 'http://www.youpinppt.com/soft/200206/1-200206152Q2.rar'),
        ('蓝绿渐变述职报告PPT模板', 'http://www.youpinppt.com/soft/190725/1-1ZH5093211.rar'),
        ('淡雅朦胧述职报告PPT模板', 'http://www.youpinppt.com/soft/190326/1-1Z326091335.rar'),
        ('箭头通用述职报告PPT模板', 'http://www.youpinppt.com/soft/180823/1-1PR30Z355.rar'),
        ('简约三角风述职报告PPT模板', 'http://www.youpinppt.com/soft/180802/1-1PP2091F0.rar'),
        ('大气山峰述职报告PPT模板', 'http://www.youpinppt.com/soft/180724/1-1PH4235446.rar'),
        ('简约通用述职报告PPT模板', 'http://www.youpinppt.com/soft/180419/1-1P41Z92J5.rar'),
        ('简约蓝色述职报告PPT模板', 'http://www.youpinppt.com/soft/180112/1-1P112100122.rar'),
        ('简约大气工作述职报告PPT模板', 'http://www.youpinppt.com/soft/171229/1-1G22ZU636.rar'),
        ('简约实用述职报告PPT模板', 'http://www.youpinppt.com/soft/171003/1-1G003101554.rar'),
        ('唯美小清新竞聘述职PPT模板', 'http://www.youpinppt.com/soft/170330/1-1F330031506.rar'),
        ('创意个人简历竞聘述职PPT模板', 'http://www.youpinppt.com/soft/170227/1-1F22F04025.rar')
    ]

    t = perf_counter()
    pool = multiprocessing.Pool(10)
    for i in download_list:
        pool.apply_async(down_load, (i,))

    pool.close()
    pool.join()

    t1 = perf_counter()
    cost = t1-t
    print(cost,'s')

免费评分

参与人数 1吾爱币 +1 收起 理由
南方路人 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

枼小天 发表于 2020-11-5 10:32
线程池改成from multiprocessing.dummy import Pool
xunxunmimi0936 发表于 2020-11-5 10:32
longzhouming 发表于 2020-11-5 10:35
首先 应该尝试不用pycharm来运行多进程的python脚本
xilidexiao 发表于 2020-11-5 10:59
又看到你了

代码没错误 资源链接问题  简约大气工作述职报告PPT模板的链接 响应极慢 所以进程还是处于工作状态 没有退出

8ff64ac2b37ee40eb677c2277937258.png

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
We. + 1 + 1 我很赞同!
liphily + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

yao5201478 发表于 2020-11-5 11:18
python调用idm下载多好
 楼主| We. 发表于 2020-11-5 11:43
枼小天 发表于 2020-11-5 10:32
线程池改成from multiprocessing.dummy import Pool

能说说为啥要这样做吗?  跟直接从multiprocessing中调用有啥区别吗?
 楼主| We. 发表于 2020-11-5 11:48
xilidexiao 发表于 2020-11-5 10:59
又看到你了

代码没错误 资源链接问题  简约大气工作述职报告PPT模板的链接 响应极慢 所以进 ...

我太难了,我自学的找不到人问只能寄希望于发帖子了。
另外我问过站主了,他买了cdn按道理说不应该这么慢啊。
 楼主| We. 发表于 2020-11-5 11:50
longzhouming 发表于 2020-11-5 10:35
首先 应该尝试不用pycharm来运行多进程的python脚本

为什么啊?
枼小天 发表于 2020-11-5 14:34
We. 发表于 2020-11-5 11:43
能说说为啥要这样做吗?  跟直接从multiprocessing中调用有啥区别吗?

多进程 场景CPU密集程序
from multiprocessing import Pool

多线程 场景IO密集程序
from multiprocessing.dummy import Pool
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 11:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表