问题标签 [pathos]

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 回答
565 浏览

python - 与 multiprocessing.Pool 的等价功能加入 pathos

multiprocessing.Process用来防止某些功能运行太久。

我想使用pathos而不是python multiprocessing(因为它能够处理标准多处理包无法处理的事情),但似乎缺少一些功能:我在 pathos 中找不到任何允许join超时的东西争论。

我希望有某种东西可以让我在一段时间过去后终止进程。

(我使用的是 Windows,所以最简单的替代方法 - 使用signal- 是不可能的,而且替代方法似乎非常复杂)

0 投票
1 回答
2870 浏览

python - 如何更改进度条的位置 - 多处理

首先,我是 Python 新手。这与问题无关,但我不得不提一下。

我正在创建一个爬虫作为我的第一个项目,以了解 Python 中的工作原理,但到目前为止,这是我的主要问题......在使用requestsand时了解终端中的“如何获取多个进度条” pathos.multiprocessing

我设法完成了所有事情,我只想有更漂亮的输出,所以我决定添加进度条。我正在使用tqdm,因为我喜欢它的外观,而且它似乎最容易实现。

这是我的方法,目的是下载文件。

我通过以下方式运行该方法Processing

所以一切都很好,就像我processes=1Pool. 但是当我运行多个进程时,假设processes=3事情开始变得很奇怪,并且我在另一个进程中得到了多个进程。

我在tqdm 文档中发现有position. 这清楚地说明了我在这种情况下所需要的目的。

position : int, optional 指定打印此条的行偏移量(从 0 开始)如果未指定则自动。用于一次管理多个条形图(例如,从线程)。

但是,我不知道如何设置该位置。我尝试了一些奇怪的东西,例如添加一个应该自增一的变量,但是每当download_lesson运行该方法时,它似乎并没有做任何递增。总是0这样的位置总是0

所以在这种情况下我似乎不太了解......欢迎任何提示,提示或完整的解决方案。谢谢!


更新#1:

我发现我也可以将另一个参数传递给地图,所以我传递了正在设置的进程数量。(例如进程=2)

因此,在我的方法中,我尝试打印出该参数,并且确实得到了0and 1,因为我正在运行2示例中的进程。

但这似乎根本没有做任何事情......

我仍然遇到相同的进度条重叠问题。当我手动将位置设置为(例如 10)时,它会在终端中跳转,因此位置确实会移动,但仍然会重叠 ofc,因为现在两者都设置为 10。但是当动态设置时,它似乎也不起作用。我不明白我的问题是什么......就像地图两次运行此方法时,它仍然为两个进度条提供最新的设置位置。我到底做错了什么?

0 投票
1 回答
1487 浏览

python - 从 ftp 下载并行文件

当我尝试按顺序从 ftp 下载文件时,它工作得很好

但是当我尝试并行做同样的事情时,我得到了

或者当我尝试分解以下两行时

我收到此错误:需要浮点数。但是没有堆栈跟踪,所以我可以调试它

我的完整代码如下:

我对 python 没有很多经验,所以如果你检查我的代码会非常好。我还有一些问题在这种情况下实现多处理的最佳方法是什么?

0 投票
2 回答
2143 浏览

python - 如何在 OSX 上的单独进程中读取网络摄像头?

我正在读取 OSX 上的网络摄像头,它适用于这个简单的脚本:

我现在想在一个单独的进程中阅读视频,我有一个更长的脚本,并且在 Linux 上的一个单独的进程中正确地读出了视频:

这在 Linux 上运行良好,但在 OSX 上我遇到了麻烦,因为它似乎无法.read()对创建的cv2.VideoCapture(device)对象(存储在 var 中self._cap)执行操作。

经过一番搜索,我找到了这个 SO answer,它建议使用Billiard,它是 python 多处理的替代品,据说有一些非常有用的改进。因此,在文件的顶部,我只是在之前的多处理导入之后添加了导入(有效地覆盖multiprocessing.Process):

video_process就在变量的实例化之前,我使用forking_enable如下:

所以在这个版本中(在 pastebin 上)然后我再次运行文件,这给了我这个错误:

pickle.PicklingError: Can't pickle : it's not found as main .stream_function

对该错误的搜索使我遇到了一个 SO 问题,其中包含一长串答案,其中一个给了我使用dill 序列化库来解决这个问题的建议。但是,该库应该与Pathos 多处理 fork一起使用。所以我只是尝试将我的多处理导入线从

但没有Array,ValueProcess似乎存在于pathos.multiprocessing包中。

从这一点开始,我完全迷失了。我正在寻找我几乎没有足够知识的东西,我什至不知道我需要在哪个方向搜索或调试了。

那么有比我更聪明的灵魂来帮助我在单独的过程中捕捉视频吗?欢迎所有提示!

0 投票
1 回答
338 浏览

python - Pathos 进程不会随着 Main 消亡

我有一个将函数和字符串列表传递给(Pathos)ProcessPool.map函数的主脚本。我遇到的问题是,当我从命令行运行进程并尝试Ctrl + C退出主线程时,我无法结束进程,然后当我关闭终端并检查机器上的进程时,我可以看到所有 python分拆出来的进程ProcessPool仍然存在,并且似乎无法退出。我在滥用图书馆吗?

0 投票
1 回答
49 浏览

python - 如何确保 Python 中的多个线程始终连续进行两个函数调用?

我正在使用这样的 Pathos:

我希望fn1fn2作为一个原子操作执行,这样没有线程可以按fn1, fn1, fn2, fn2.

0 投票
1 回答
209 浏览

python - Pathos 多处理池 Cpickle 错误

当我尝试运行以下代码时:

它得到以下错误:

pathos.multiprocessing 不是旨在解决这个问题吗?

0 投票
0 回答
151 浏览

python - Python pathos多处理CPickle错误

以下代码:

它得到以下错误:

pathos.multiprocessing 不是旨在解决这个问题吗?

0 投票
0 回答
420 浏览

python - Pathos 多处理 pool.map 不尊重递归 = True

当我尝试在 sympy.lambdify 的lambdified 函数上使用 pool.map 时,莳萝会抛出一个错误:

我在尝试使用 dill.dump 转储对象时也遇到了此错误,但可以通过dill.settings['recurse'] = True. 但是,导入dill和设置标志似乎对 pool.map() 没有影响:

此外,我希望能够并行化函数的实际 sy.lambdify 创建:

这也失败了,出现了类似的错误。

我找到了第一种情况的解决方法:我只是将函数调用包装到一个非 sympy 的:

但这在第二种情况下没有帮助(并行化lambdify)。有没有办法强制pathos兑现dill.settings

0 投票
0 回答
109 浏览

python - 带生成器的池:Chunkify

我正在使用pathos.Pool,但我认为所需的技术与 `multiprocessing.Pool 中的技术相当。

我有一个生成器,可以产生大量(大量)要做的事情。

不幸的是,应用于我生成的项目(此处:)的功能doStuff很快就会清除。因此,到目前为止,我一直无法通过序列化来提高速度——事实上,代码的多处理版本比原始版本运行得慢。

我认为这是因为与工作人员完成任务所需的时间相比,将下一个项目从池中交付给工作人员的开销很大。

我想解决方案是将生成的项目“分块”:将项目分组到n 列表中,然后将它们提供给包含n许多工人的池(因为所有工作都需要几乎完全一样的时间)。或者也许是一个不太极端的版本。

在 Python 中实现这一目标的好方法是什么?