问题标签 [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.
python - 与 multiprocessing.Pool 的等价功能加入 pathos
我multiprocessing.Process
用来防止某些功能运行太久。
我想使用pathos
而不是python multiprocessing
(因为它能够处理标准多处理包无法处理的事情),但似乎缺少一些功能:我在 pathos 中找不到任何允许join
超时的东西争论。
我希望有某种东西可以让我在一段时间过去后终止进程。
(我使用的是 Windows,所以最简单的替代方法 - 使用signal
- 是不可能的,而且替代方法似乎非常复杂)
python - 如何更改进度条的位置 - 多处理
首先,我是 Python 新手。这与问题无关,但我不得不提一下。
我正在创建一个爬虫作为我的第一个项目,以了解 Python 中的工作原理,但到目前为止,这是我的主要问题......在使用requests
and时了解终端中的“如何获取多个进度条” pathos.multiprocessing
。
我设法完成了所有事情,我只想有更漂亮的输出,所以我决定添加进度条。我正在使用tqdm
,因为我喜欢它的外观,而且它似乎最容易实现。
这是我的方法,目的是下载文件。
我通过以下方式运行该方法Processing
:
所以一切都很好,就像我processes=1
在Pool
. 但是当我运行多个进程时,假设processes=3
事情开始变得很奇怪,并且我在另一个进程中得到了多个进程。
我在tqdm 文档中发现有position
. 这清楚地说明了我在这种情况下所需要的目的。
position : int, optional 指定打印此条的行偏移量(从 0 开始)如果未指定则自动。用于一次管理多个条形图(例如,从线程)。
但是,我不知道如何设置该位置。我尝试了一些奇怪的东西,例如添加一个应该自增一的变量,但是每当download_lesson
运行该方法时,它似乎并没有做任何递增。总是0
这样的位置总是0
。
所以在这种情况下我似乎不太了解......欢迎任何提示,提示或完整的解决方案。谢谢!
更新#1:
我发现我也可以将另一个参数传递给地图,所以我传递了正在设置的进程数量。(例如进程=2)
因此,在我的方法中,我尝试打印出该参数,并且确实得到了0
and 1
,因为我正在运行2
示例中的进程。
但这似乎根本没有做任何事情......
我仍然遇到相同的进度条重叠问题。当我手动将位置设置为(例如 10)时,它会在终端中跳转,因此位置确实会移动,但仍然会重叠 ofc,因为现在两者都设置为 10。但是当动态设置时,它似乎也不起作用。我不明白我的问题是什么......就像地图两次运行此方法时,它仍然为两个进度条提供最新的设置位置。我到底做错了什么?
python - 从 ftp 下载并行文件
当我尝试按顺序从 ftp 下载文件时,它工作得很好
但是当我尝试并行做同样的事情时,我得到了
或者当我尝试分解以下两行时
我收到此错误:需要浮点数。但是没有堆栈跟踪,所以我可以调试它
我的完整代码如下:
我对 python 没有很多经验,所以如果你检查我的代码会非常好。我还有一些问题在这种情况下实现多处理的最佳方法是什么?
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
,Value
和Process
似乎存在于pathos.multiprocessing
包中。
从这一点开始,我完全迷失了。我正在寻找我几乎没有足够知识的东西,我什至不知道我需要在哪个方向搜索或调试了。
那么有比我更聪明的灵魂来帮助我在单独的过程中捕捉视频吗?欢迎所有提示!
python - Pathos 进程不会随着 Main 消亡
我有一个将函数和字符串列表传递给(Pathos)ProcessPool.map
函数的主脚本。我遇到的问题是,当我从命令行运行进程并尝试Ctrl + C
退出主线程时,我无法结束进程,然后当我关闭终端并检查机器上的进程时,我可以看到所有 python分拆出来的进程ProcessPool
仍然存在,并且似乎无法退出。我在滥用图书馆吗?
python - 如何确保 Python 中的多个线程始终连续进行两个函数调用?
我正在使用这样的 Pathos:
我希望fn1
并fn2
作为一个原子操作执行,这样没有线程可以按fn1, fn1, fn2, fn2
.
python - Pathos 多处理池 Cpickle 错误
当我尝试运行以下代码时:
它得到以下错误:
pathos.multiprocessing 不是旨在解决这个问题吗?
python - Python pathos多处理CPickle错误
以下代码:
它得到以下错误:
pathos.multiprocessing 不是旨在解决这个问题吗?
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
?
python - 带生成器的池:Chunkify
我正在使用pathos.Pool
,但我认为所需的技术与 `multiprocessing.Pool 中的技术相当。
我有一个生成器,可以产生大量(大量)要做的事情。
不幸的是,应用于我生成的项目(此处:)的功能doStuff
很快就会清除。因此,到目前为止,我一直无法通过序列化来提高速度——事实上,代码的多处理版本比原始版本运行得慢。
我认为这是因为与工作人员完成任务所需的时间相比,将下一个项目从池中交付给工作人员的开销很大。
我想解决方案是将生成的项目“分块”:将项目分组到n
列表中,然后将它们提供给包含n
许多工人的池(因为所有工作都需要几乎完全一样的时间)。或者也许是一个不太极端的版本。
在 Python 中实现这一目标的好方法是什么?