您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么以下简单的并行化代码比Python中的简单循环慢得多?

为什么以下简单的并行化代码比Python中的简单循环慢得多?

从以下文档threading

如果您知道所调用函数基于已编译的扩展,该扩展会在大多数计算过程中释放Python全局解释器锁(GIL)…

问题在于,在这种情况下,您不知道这一点。Python本身仅允许一次运行一个线程(python解释器每次执行python操作时都会锁定GIL)。

threading仅当myfun()大部分时间都用在已编译的Python扩展程序中 并且该扩展程序释放GIL 时,它才有用。

Parallel代码之所以令人尴尬地缓慢,是因为您正在做大量工作来创建多个线程-然后您一次只能执行一个线程。

如果使用multiprocessing后端,则必须将输入数据复制到四个或八个进程中的每个进程中(每个内核一个),在每个进程中进行处理,然后再将输出数据复制回去。复制将会很慢,但是如果处理比仅仅计算一个平方稍微复杂一点,那可能是值得的。测量并查看。

python 2022/1/1 18:27:58 有591人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶