python多进程反而慢_python 3.6 多进程的坑
python 慢是事实, 但是你如果想让他快,使用cpython 也可以,但是前提在你不使用第三方包的情况下,你要用了numpy pandas ,cython 就无法使用了,那只有 使用python的多线程 多进程 协程来解决
都知道 python 有 GIL全局锁,所以 多线程是鸡肋,只有 多进程才可以利用上多核cpu ,当你启动你的程序 打开 htop 看到多个核都 跑满了 飚绿色 100% 了 就是成功用上了python的多进程 ,线程是进程的子集,协程是介于 线程和进程的
在使用python的多进程有很多 坑,使用多进程 如果不用异步 就是阻塞 了,如果 代码写的不同,就又阻塞了。
创建 进程池 Pool,然后使用 apply_sync()方法实现异步
注意了 apply_sync()里的参数书写非常有讲究,不然就错了,就滑出去了,不执行,要么就是阻塞执行,
apply_sync(func= ,args=(,)), func 就是你要调用的方法,args就是放你调用方法的参数列表,实参, [func=]这五个字符不可以省略,生了,就不执行了,【args=】这五个字符也不可以省略,而且 args= 后跟的 小括号里 末尾必须跟一个 逗号【,】否则还是阻塞执行,
如果你 被调用的方法有返回值 ,必须使用 for 推导迭代式获取 每个方法的 result.get(),不然就又变阻塞了,阻塞的一个表现就是只能使用跑满一个cpu 核 核量,其他核就一直闲置,
import multiprocessing
from multiprocessing import Pool,cpu_count
from multiprocessing import Queue
from multiprocessing import Lock
from multiprocessing import Pipe
import logging
import numpy as np
import pandas as pd
multiprocessing.freeze_support()
pool=Pool(processes=self.cpus)
sub_dir_list=[]
logger.info("parrel_iter_image")
for sub_dir in range(0,10):
sub_root = self.image_root_dir + str(sub_dir) + '/'
sub_dir_list.append(sub_root)
logger.info(len(sub_dir_list))
result=[res.get() for res in [ pool.apply_async(func=self.iter_image,args=(sub_dir,)) for sub_dir in sub_dir_list]]
self.real_face= result
results = [res.get() for res in
[propool.apply_async(func=self._sub_df_etl, args=(df, field, out_field, use_stopword,)) for
index, df in enumerate(df_list)]]
python多进程反而慢_python 3.6 多进程的坑相关推荐
- python多线程和多进程的使用_python多线程与多进程
python多线程与多进程 python多线程 python中提供两个标准库thread和threading用于对线程的支持,python3中已放弃对前者的支持,后者是一种更高层次封装的线程库,接下来 ...
- python 多进程并发 阻塞_python并发编程多进程(一)
一 什么是进程 进程:正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 举例(单核+多道,实现多个进程的并发执行): 爱根儿老师在一个时间段内有很多任务要做:python备课的任务,写书的 ...
- python中remove用法_python中remove的一些坑
前几天,使用python时遇到这么一个需求,删除一个列表中值为1的元素.我寻思着使用remove方法,但是remove方法只会删除第一个,于是我使用for循环去删除.代码和运行结果如下: 当时这个结果 ...
- python selenium安装失败_python:学习selenium遇到的坑
最近在学习python,在使用selenium做自动化时候遇上各种坑,有很多是自己不小心弄出来的,下面记录下自己学习中遇上的坑: 用pip安装selenium时候一直报错,提示没有权限,即使我用了su ...
- python函数修饰参数_Python 函数参数的填坑之路
背景 最近在看廖雪峰老师的python3教程之函数的参数 受益匪浅,但是在实践的过程中,发现了一些不解之谜 两个错误import _thread import time def func1(x): w ...
- python中的多线程求值串行和并行_python多线程和多进程——python并行编程实验
工作中经常涉及到加速程序的运行,除了代码逻辑的优化,算法的优化之外,还经常使用的一招就是并发编程.至于python的并型编程这一块.说到并行编程,我们不得不谈线程和进程这两个概念: + 进程:对于操作 ...
- python 多进程绑定端口_Python教程之创建多进程
点上面"东哥IT笔记",关注并星标 每天一篇业界最新技术分享 现在很多CPU都支持多核,甚至是手机都已经开始支持多核了.而Python的GIL(Global Interpreter ...
- python多线程效率低_Python 多进程、多线程效率比较
Python 界有条不成文的准则: 计算密集型任务适合多进程,IO 密集型任务适合多线程.本篇来作个比较. 通常来说多线程相对于多进程有优势,因为创建一个进程开销比较大,然而因为在 python 中有 ...
- python 服务端性能_python 学习笔记---Locust 测试服务端性能
由于人工智能的热度, python目前已经成为最受欢迎的编程语言,一度已经超越Java . 本文将介绍开源的python 测试工具: locust 使用步骤: 1. 安装python 3.0以上版本 ...
最新文章
- centos linux引导修复_CentOS没了,Linux的新世界来了
- python 如何跳过异常继续执行
- Leetcode5635. 构建字典序最大的可行序列[C++题解]:dfs暴搜
- 循环获取枚举值和名称
- Ubuntu4.04 安装Mesos
- 小米手机第三方卡刷软件_小米note可以用第三方recovery刷官方卡刷包吗
- 烽火FSU设备通过中国铁塔测试
- 使用PowerGUI管理你的VMware ESX
- Slove the {Failed to load unit 'HGCM' (VERR_INVALID_PARAMETER)}
- 静态网网页设计成品下载
- 【Python技能树共建】requests-html库初识
- javaEye上对于南京软件公司的讨论
- Oracle-第4章	单行函数
- 博图db块变量导出_如何查看西门子博图软件DB数据块中的变量地址
- E1视音频编解码器应用方案详细说明
- Mysql性能优化及主从同步-mysql-xing-neng-you-hua-ji-zhu-cong-tong-bu
- wincc报表,通用报表,数据报表,独立于任何组态软件运行(
- 「津津乐道播客」#267 津津有味:冬天必须吃羊肉,没有为什么
- 一个27岁妹子的软件测试之路
- 日本漫画师 新条真由 《霸王爱人》漫画素材PDF版