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 多进程的坑相关推荐

  1. python多线程和多进程的使用_python多线程与多进程

    python多线程与多进程 python多线程 python中提供两个标准库thread和threading用于对线程的支持,python3中已放弃对前者的支持,后者是一种更高层次封装的线程库,接下来 ...

  2. python 多进程并发 阻塞_python并发编程多进程(一)

    一 什么是进程 进程:正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 举例(单核+多道,实现多个进程的并发执行): 爱根儿老师在一个时间段内有很多任务要做:python备课的任务,写书的 ...

  3. python中remove用法_python中remove的一些坑

    前几天,使用python时遇到这么一个需求,删除一个列表中值为1的元素.我寻思着使用remove方法,但是remove方法只会删除第一个,于是我使用for循环去删除.代码和运行结果如下: 当时这个结果 ...

  4. python selenium安装失败_python:学习selenium遇到的坑

    最近在学习python,在使用selenium做自动化时候遇上各种坑,有很多是自己不小心弄出来的,下面记录下自己学习中遇上的坑: 用pip安装selenium时候一直报错,提示没有权限,即使我用了su ...

  5. python函数修饰参数_Python 函数参数的填坑之路

    背景 最近在看廖雪峰老师的python3教程之函数的参数 受益匪浅,但是在实践的过程中,发现了一些不解之谜 两个错误import _thread import time def func1(x): w ...

  6. python中的多线程求值串行和并行_python多线程和多进程——python并行编程实验

    工作中经常涉及到加速程序的运行,除了代码逻辑的优化,算法的优化之外,还经常使用的一招就是并发编程.至于python的并型编程这一块.说到并行编程,我们不得不谈线程和进程这两个概念: + 进程:对于操作 ...

  7. python 多进程绑定端口_Python教程之创建多进程

    点上面"东哥IT笔记",关注并星标 每天一篇业界最新技术分享 现在很多CPU都支持多核,甚至是手机都已经开始支持多核了.而Python的GIL(Global Interpreter ...

  8. python多线程效率低_Python 多进程、多线程效率比较

    Python 界有条不成文的准则: 计算密集型任务适合多进程,IO 密集型任务适合多线程.本篇来作个比较. 通常来说多线程相对于多进程有优势,因为创建一个进程开销比较大,然而因为在 python 中有 ...

  9. python 服务端性能_python 学习笔记---Locust 测试服务端性能

    由于人工智能的热度, python目前已经成为最受欢迎的编程语言,一度已经超越Java . 本文将介绍开源的python 测试工具: locust 使用步骤: 1. 安装python 3.0以上版本 ...

最新文章

  1. centos linux引导修复_CentOS没了,Linux的新世界来了
  2. python 如何跳过异常继续执行
  3. Leetcode5635. 构建字典序最大的可行序列[C++题解]:dfs暴搜
  4. 循环获取枚举值和名称
  5. Ubuntu4.04 安装Mesos
  6. 小米手机第三方卡刷软件_小米note可以用第三方recovery刷官方卡刷包吗
  7. 烽火FSU设备通过中国铁塔测试
  8. 使用PowerGUI管理你的VMware ESX
  9. Slove the {Failed to load unit 'HGCM' (VERR_INVALID_PARAMETER)}
  10. 静态网网页设计成品下载
  11. 【Python技能树共建】requests-html库初识
  12. javaEye上对于南京软件公司的讨论
  13. Oracle-第4章 单行函数
  14. 博图db块变量导出_如何查看西门子博图软件DB数据块中的变量地址
  15. E1视音频编解码器应用方案详细说明
  16. Mysql性能优化及主从同步-mysql-xing-neng-you-hua-ji-zhu-cong-tong-bu
  17. wincc报表,通用报表,数据报表,独立于任何组态软件运行(
  18. 「津津乐道播客」#267 津津有味:冬天必须吃羊肉,没有为什么
  19. 一个27岁妹子的软件测试之路
  20. 日本漫画师 新条真由 《霸王爱人》漫画素材PDF版

热门文章

  1. 北方大学 ACM 多校训练赛 第五场(D. 节操大师 - 二分)
  2. 有枚举他不用,非要把值写死——为什么有些大公司技术弱爆了?
  3. iPhone怎么找回被误删除的短信?三种方法教给你
  4. ias mysql_MySQL 中 GROUP BY 基本实现原理
  5. Windows下安装lex(flex)与yacc(bison)
  6. 赛博时代,拿什么盛放对逝者的思念?
  7. allpairs混合正交表工具的使用步骤
  8. BZOJ3823 定情信物
  9. Urp渲染管线下的卡通冰效果实现
  10. Golang初次学习