【问题标题】:Are resource demanding process divided into multiple processes?资源需求流程是否分为多个流程?
【发布时间】:2018-09-30 14:22:53
【问题描述】:

它在谷歌云引擎上被发现。创建了我的脚本的多个实例(通过 bash?)。原因可能是脚本需要非常多的内存。这个划分究竟是如何进行的?对性能有影响吗?

[更新]我的错误。这些实例是python创建的线程。

【问题讨论】:

  • 看起来像python,而不是bash...
  • @Poshi,根据父ID,所有python进程的父进程都是bash。
  • @Poshi,你是对的,这些是python创建的线程。

标签: python linux process google-compute-engine


【解决方案1】:

不要高估 Python 的技能。 Python连多线程的进程模型都做不到,自动将任务划分为并行可执行的子任务已经远远超出了它的极限。

这个流程因为是这样写的,所以分为子流程。

您所估计的功能 - 自动并行化进程 - 在一般情况下实际上是无法解决的,尽管它仍然是计算机科学研究的热门话题。

【讨论】:

  • 所有python进程的父进程都是bash,根据父ID。所以我怀疑不是python脚本创建了所有进程,而是bash以某种方式..
  • @user7586189 使用 Linux API 几乎不可能做到这一点,因为进程只能派生出自己的子进程。唯一的方法是,如果 bash 会以某种方式“要求”python 通过跟踪/调试 API 派生子进程,那么 bash 中甚至没有任何类似的东西。此外,bash 对 python 的内部结构一无所知,将其并行化将是一项深度几乎不可能的任务,需要对其内部结构进行非常深入的重组。相信,不存在这样的东西,python 制作它的子进程是因为它是一种单线程语言。
  • @user7586189 顺便说一句,linux(在这个基本级别上)的优势不是它会如此智能,它的优势在于它完全按照你说的去做.
  • 我认为你是对的。实际上线程数(NLWP)与创建的进程相匹配。令人困惑的是,所有这些实例都有它们的 PID 但实际上是线程?
  • @user7586189 不,它们是进程。在 Python 世界中,有一种习惯,他们称之为进程线程,但这样做,他们说的是他们的产品真正在做什么不同。一个线程意味着它们的多个执行控制运行在同一个地址空间中。 没有python进程可以做到这一点,python解释器本身完全无法做到这一点,它是一个简单的单线程解释器,它与任何多线程进程模型都不同。甚至没有计划。 此外,您的 pstree 也清楚地表明这些是进程,线程包含在
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
相关资源
最近更新 更多