思考

并行运算的代码块中,是计算密集型的。因为计算的时间复杂度比较高,跑每一个例子会耗费几天的时间。因此不存在所谓活少人多的问题。

1.是否是进程优先级的问题

答案为否,因为个进程优先级一致,而每个进程所需的内存量和计算量基本一致,所需运行时间也接近的。

2.是否是代码层面的问题

答案为否,因为可以看到已经有台机器可以正常的按照意图来跑。

3.是否是机器的问题

答案有可能,那究竟是机器的什么问题呢?在一台21核和64G内存的机器上,同样也出现了类似的问题。这应该可以排除核数目和内存占比对此事的影响。

参考

1.https://segmentfault.com/q/1010000011117956

该题主描述了同样的问题。我觉得比较有意义的回答是这个

multiprocessing.Pool 只是用来启动多个进程而不是在每个core上启动一个进程。换句话说Python解释器本身不会去在每个core或者processor去做负载均衡。这个是由操作系统决定的。如果你的工作特别的计算密集型的话,操作系统确实会分配更多的core,但这也不是Python或者代码所能控制的或指定的。

multiprocessing.Pool(num)中的num可以很小也可以很大,比如I/O密集型的操作,这个值完全可以大于cpu的个数。

硬件系统的资源分配是由操作系统决定的,如果你希望每个core都在工作,就需要更多的从操作系统出发了~

在后续的回答中给出了一个stackoverflow里面的此类问题介绍

2.https://stackoverflow.com/questions/21348746/python-multiprocessing-pool-doesnt-use-100-of-each-cpu

该位置解释中,有谈到进程间通信对该问题的影响,但我觉得没有意义。

有一个解释我到比较欣赏

You’re asking wrong kind of question. multiprocessing.Process represents process as understood in your operating system. multiprocessing.Pool is just a simple way to run several processes to do your work. Python environment has nothing to do with balancing load on cores/processors.

If you want to control how will processor time be given to processes, you should try tweaking your OS, not python interpreter.

Of course, “heavier” computations will be recognised by system, and may look like they do just what you want to do, but in fact, you have almost no control on process handling.

“Heavier” functions will just look heavier to your OS, and his usual reaction will be assigning more processor time to your processes, but that doesn’t mean you did what you wanted to - and that’s good, because that the whole point of languages with VM - you specify logic, and VM takes care of mapping this logic onto operating system.

大致意思是python解释器不会协调内核的计算。多进程中的进程是由操作系统来协调的,放在哪个CPU上跑,计算占比等等,要想控制这个,需要控制计算机。

实验

实验环境:4C8G

1.工作任务设置成计算密集型

四个任务被均分到四个核上,顺利运行

2.计算密集型+每个进程小内存消耗

四个任务被均分到四个核上,顺利运行

3.计算密集型+每个进程大内存消耗

计算机卡死(笑cry)

其实可以看到python多进程是正常的!!!Dame!!!

总结

目前linux选择的操作系统为centos,操作系统不是问题。应该是机器的问题,内核的问题。

——————————————分隔线————————————

有遇到同样问题的,欢迎讨论!

——————————————后记—————————————

现在在做实验,发现没有出现以前的情况了,每个核都会正常的处理。我在想之前可能是资源的问题了。内存资源不够,所以无法同时运行,只能等待!这只是猜想了。

---------------------

原文:https://blog.csdn.net/u013735511/article/details/80079373

python多进程用不了_python 多进程,实际上都没有运行,sleep相关推荐

  1. python多线程多进程多协程_python 多进程、多线程、协程

    1.python的多线程 多线程就是在同一时刻执行多个不同的程序,然而python中的多线程并不能真正的实现并行,这是由于cpython解释器中的GIL(全局解释器锁)捣的鬼,这把锁保证了同一时刻只有 ...

  2. python多进程用不了_Python多进程相关的坑

    Python的multiprocessing模块实现了多进程功能,但官方文档上只有一些比较简单的用法,主要是使用函数作为process的target,而如何在class中使用多进程并没有多讲解.goo ...

  3. python3多进程写时拷贝_python多进程实现复制文件

    [Python] 纯文本查看 复制代码''' 多进程实现复制文件 步骤: (1)获得源文件夹路径: (2)获取源文件夹下各文件的文件名 (3)获得目标文件夹 (4)复制文件(文件夹不能复制) 新增内容 ...

  4. python中怎么编写程序_python写完程序怎么运行

    安装并配置完成之后,我们就可以编写第一个python程序.学过其他语言的兄弟姐妹们,都知道语言的入门程序就是hello world.那么,我们这里也以hello world来抛砖引玉,打开python ...

  5. python是不是最简单的语言_全世界都公认运行Python的最简单方法

    Python是一种跨平台的编程语言,这意味着它可以在Windows,macOS,Linux等多种平台上运行,甚至可以移植到Java和.NET虚拟机.它是免费和开源的. 即使当今的大多数Linux和Ma ...

  6. python开多少进程合适_python多进程基础

    python中的多进程编程方式和多线程非常相似,几乎可以说只是换了一些函数,有了之前讲过的多线程基础,很多地方我就只展示一些代码,在涉及到差别的地方再着重说明. 本文分为如下几个部分事先说明 最简单的 ...

  7. python进程池调用实例方法_Python 多进程并发操作中进程池Pool的实例

    在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中的Process ...

  8. python多进程爬虫保存数据_Python多进程爬虫东方财富盘口异动数据+Python读写Mysql与Pandas读写Mysql效率对比...

    先上个图看下网页版数据.mysql结构化数据 通过Python读写mysql执行时间为:1477s,而通过Pandas读写mysql执行时间为:47s,方法2速度几乎是方法1的30倍.在于IO读写上, ...

  9. python多进程读同一个文件_python 多进程读写文件

    import time from multiprocessing import Process, JoinableQueue, cpu_count import csv ####处理一条数据的方法 d ...

  10. python 输出在固定位置_python多进程/线程抢占stdoutput总是在固定位置截断上个输出?...

    自己写的爬虫包里面有个简单的日志输出函数logging,没做任何线程安全方面的处理,其核心如下: log = "%s %s\t%s-%s\t%s | %s" % (time.str ...

最新文章

  1. 新手科普 | 探索机器学习模型,保障账户安全
  2. java8的表达式_java8中的Lambda表达式
  3. Css 选择器 算法 规则
  4. android软件获取系统签名
  5. 阿里云MaxCompute香港开服 将引入更多人工智能服务
  6. 实现进程守护 脚本命令
  7. CryptoQuant CEO:比特币大规模从Coinbase流出是最强劲的看涨信号
  8. Java API For WebSocket(七)Java EE环境
  9. BMC REDFISH
  10. SpringBoot集成DM数据库
  11. 如何查看自己已连接WiFi的密码
  12. C语言char转short,将short类型转换为char类型
  13. 2020版本kali安装
  14. 微信小程序开发手记1.0
  15. python笔记 同行输出 print格式化输出
  16. CanOpen and EtherCAT
  17. 辐射76 服务器位置,《辐射76》确认没有NPC 但将开放私人服务器与MOD
  18. 湖北汽车工业学院c语言,湖北汽车工业学院c语言课程设计(学生学籍管理系统)...
  19. stm32驱动rgb屏电路图_基于STM32F767驱动 LTDC LCD(RGB屏)
  20. 国家标准免费下载网站大全

热门文章

  1. OpenCV版本与EmguCV版本匹配问题
  2. 在小树林飞也能又快又稳,这是港科大沈劭劼组的「猛禽」无人机重规划框架...
  3. Kotlin基础(五)Kotlin的类型系统
  4. [幽默漫画]对于程序猿来说deadline很容易搞定!
  5. 网络攻防 第六周学习总结
  6. Makedown文件保存问题
  7. UVA 167 - The Sultan's Successors
  8. 【Prison Break】第二天(3.28)
  9. 常用的C语言函数介绍
  10. 【OpenCV学习笔记】【编程实例】二(图像的旋转和翻转)