问题标签 [process-pool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
139 浏览

python-3.x - 使用 ProcessPoolExecutor 时增加 python 脚本的执行时间

当我在 56 核机器上使用进程池执行器触发它的并行实例时,我观察到 python 脚本的执行时间增加了。脚本 abc.py 导入一个沉重的 python 库,大约需要 1 秒。

测试方法

下面的代码也需要 1 秒,这是预期的

串行执行

但是下面的代码在 56 核机器上执行需要 5 秒

并行执行

我检查了进程日志中的执行时间,可以注意到现在脚本(abc.py)的执行时间也从 1 秒增加到了 4 秒。有人可以帮我理解这种行为吗?

0 投票
0 回答
45 浏览

python - Process Pool Executor 运行范围之外的代码

我正在尝试从 Python 中的并发期货中与 Process Pool Executor 并行运行一堆进程。

这些进程都在一个while循环中并行运行,这很棒,但由于某种原因,main方法之外的代码重复运行。我看到另一个答案说使用 name == main check 来修复,但它仍然不起作用。

有什么想法可以让我在 main 方法中运行代码吗?我的对象不断被重置。

编辑:我改为使用 ThreadPoolExecutor 运行我的代码并解决了问题,尽管我仍然对此感到好奇。

0 投票
0 回答
17 浏览

bash - 如何编写从 mssql 中分块读取大数据并为每条记录进行休息调用的 bash 脚本

我有一个要求,我必须将 6G 左右的大量数据迁移到其他系统。另一个系统支持 REST API,我必须在从 mssql 读取数据后为每个记录调用它。我认为以下是两个重要步骤

  1. 分块从 MSSQL 服务器读取数据
  2. 进行 REST API 调用

我是 bash 的新手,我想优化流程,以便它可能需要几个小时而不是几天,因为我想实现流程池 bash,以便可以并行完成工作。任何帮助都赞赏我如何使用 bash 脚本来实现这一点。

0 投票
1 回答
21 浏览

python - 如何在不阻塞 Python 线程的情况下管理进程的退出?

我正在尝试用 Python 编写一种任务管理器。它基于一个作业队列,主线程负责将作业添加到该队列中。我已经让这个类来处理排队的作业,能够限制并发进程的数量并处理完成进程的输出。

问题来了,_check_jobs 函数我没有更新每个进程的返回码值,独立于它的状态(正在运行,完成......)job.returncode 总是无,因此我无法运行 if 语句并删除处理作业列表中的作业。

我知道可以使用 process.communicate() 或 process.wait() 来完成,但我不想阻止启动进程的线程。有没有其他方法可以做到这一点,也许使用ProcessPoolExecutor?队列可以随时被进程击中,我需要能够处理它们。

谢谢大家的时间和支持:)

0 投票
2 回答
56 浏览

python - multiprocessing.Pool 使用共享值映射多个参数(已解决)

我正在练习使用共享值进行多处理。我有一个使用共享值工作的现有 Process 函数:

上面的进程是针对spawn两个进程,每个进程都指向一个带有args(shared_number, lock)的函数。该函数按预期运行。

我试图将其转换为多处理池 - 我试图在我的 pool.map() 语句中传递参数 `[ shared_number, lock] *2 (我希望池只产生两个进程)但 python 拒绝它:

感谢您提前提供任何有用的输入。


更新:

有人建议我使用星图而不是地图,但我得到了错误RuntimeError: Synchronized objects should only be shared between processes through inheritance。看起来multiprocessing.Pool不允许以这种方式传递共享值?

以为我会共享任务功能add_100_with_lock,如下所示:

有没有办法让传递共享值与 multiprocessing.Pool 一起工作?

0 投票
0 回答
7 浏览

python-3.x - 关于测量进程池执行所用时间的问题

我试图查看使用 ProcessPool 和 ThreadPool 执行相同操作需要多少时间。操作是进行 1000 次 API 调用并返回一个 JSON 对象。通过 ThreadPool 执行此操作时,大约需要 68 秒。但是对于进程池,同样只需要 0.2 秒。这让我想如果我测量时间不正确。对此的任何想法都会有所帮助。我在下面粘贴我的代码供您参考:

0 投票
1 回答
37 浏览

performance - 大型数据集,ProcessPoolExecutor 问题

问题 - ProcessPoolExecutor 没有提高速度。tqdm 确认

对 python 有足够的了解,可以复制和/或编写一个有效的程序。每个文件需要大约 40 秒来加载->过滤->写入。我有大约 6,800 个文件要处理,并且想要一个更好的版本,它可以使用我所有的处理能力(6 核),我尝试编写该版本(如下)。所述版本产生,但比我原来的功能稍慢:

我希望至少减少每个文件的处理时间。


更新,结束:
首先,我要感谢所有评论的人和回答者(我太新了,无法投票)。似乎有意义地提高效率的唯一方法是从不解码并从原位缓冲区数据中获取我想要的东西,这完全超出了我目前的能力(这是我第一次接触任何类型的代码)。


我计划(目前)尽可能地运行我的初始版本(f.bufr in,f.bufr_.txt out),我将在每次“运行”后将处理过的文件移动到子目录。一线希望是我在这方面学到了足够多的知识,我将能够制作一个程序来将所有文本输出合并到一个文件中。再次感谢。