LeoWu12306 2020-02-22 16:03 采纳率: 0%
浏览 3039

Python 多进程比单进程更慢问题求助

背景:初学Python的菜鸟,没有任何语言基础。目前需求是希望通过Python+Selenium3使用多个账号实现自动操作网页。由于账号数比较多,需要借助多线程/多进程协助。
但是在使用了多进程代码后速度并没有提升,经过检测发现确实是不同进程在操作。经过简化的代码块如下(将网页操作简化为一个简单的系统计算),请各位大大帮忙看看。可以看出,单线程比多线程执行速度更快。


更新内容的分割线

太感谢各位的回答了!没想到周末菜鸟的问题还有这么多回答,感谢各位!
大家的回答主要是说该任务太简单所以没有差距,我后来将任务复杂化了一些,发现多进程在计算确实有一些优势。但是还是发现了几个个问题:

1 在多进程的前提下,同样的任务,我将循环语句写在主任务中和子任务中差距非常之大(循环语句写在母任务后,子任务就没有循环了),差距大概在10~20倍。

2 如果我将循环写在子任务中,在anaconda中的spyder可以运行,但是在vs code 2020中运行,会报错:can only join a child process 请问是什么原因?

3 我的真实需求是:登陆N个账号,在同一个网站上做同样的操作,目前是线性的。即使我写了多进程,发现依旧同一时间只会打开一个浏览器,第二个进程直到第一个把网页操作全部执行完毕才会打开。请问要怎么样才能满足我的需求,同时打开多个浏览器操作?目前i9和64G内存表示内心毫无波动,甚至有一点想笑。

代码块修改为实际需求的简化版本:

# 子进程,所需要执行的任务

# 导入含有账号密码的excel

def MainProcess(i):   
        p = multiprocessing.Pool()

        for key in account.keys():
            #登录网页、页面点击等各种操作


# 主程序
if __name__=='__main__':
        start_time = time.time()
        print('程序开始')
        MainProcess()
        end_time = time.time()
        print('本次耗时',(end_time - start_time),'秒')
  • 写回答

3条回答

  • 九洲歌同 2020-02-23 00:34
    关注

    开启进程本身是耗时的,执行的任务换成消耗几秒的,可能差距就出来了

    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记