问题标签 [multiprocessing-manager]
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 - 如何在进程之间共享 aiohttp.ClientSession()?
我正在尝试创建一个共享资源,我可以在其中使用 aiohttp.ClientSession() 对象来获取某些数据。这允许我使用并行化来加速实际计算。
但是,当我尝试创建一个使用 aiohttp.ClientSession 的管理器时,会出现错误:TypeError: no default __reduce__ due to non-trivial __cinit__
.
我不确定发生了什么,也许有人可以帮助我了解此错误的含义以及我如何实际初始化使用 aiohttp.ClientSession 的管理器。
作为备用解决方案,我可以使用请求,在 BaseManager 中注册时似乎没有问题。但是,这将严重阻碍我的进程,因为我有相当大的工作负载运行超过 60 多个并行进程,其中每个数据调用都需要相当长的时间才能完成。
我希望有人可以帮助我,并提前非常感谢!
python - 运行大量使用 Python 多处理修改同一列表的进程会导致 OSError:打开的文件过多
我无法成功执行以下代码,总是以以下错误结束:
如您所见,我已经尝试以 500 个块执行进程,因为它们在仅执行 500 个时运行良好,但是在第二个循环之后我仍然收到上述错误。我猜这些进程在执行后没有正确关闭,但是我不知道如何检查并正确关闭它们......
这是我的代码:
python - 如何从 multiprocessing.managers.SyncManager 构造代理对象?
我有长时间运行的文件 I/O 任务,我希望能够将其移动到守护程序/服务器进程中。CLI 工具将用于对新作业进行排队以运行,查询正在运行的作业的状态,并等待单个作业。Pythonmultiprocessing.managers
看起来像是处理 IPC 的一种非常简单的方法。我希望能够SyncManager.Event
为客户端构建一个等待而不阻塞服务器,但尝试这样做会导致触发“服务器尚未启动”断言。具有讽刺意味的是,这个断言是从服务器发送到客户端的,所以很明显服务器是在某个地方启动的。
这是最小的示例:
如果我运行客户端,我会看到:
服务器输出为:
python - Python 多处理:如何让 Pool 和 Manager 一起工作?
我试图了解如何Pool()
以及Manager()
可以在 Python 的多处理库中组合以在各个工作进程之间共享对象。在我的示例中,我想要一个共享列表input_list
,它应该可供所有工作进程访问:
但是,我得到一个NameError: name 'input_list' is not defined
. 知道为什么input_list
不被识别为共享对象吗?
python - 如何访问存储在 multiprocessing.Manager 列表中的类?
我可以访问和更改列表中类的属性,如下所示:
但是,当使用 时multiprocessing.Manager
,我的代码似乎没有任何效果:
如何使用模块正确存储带有类实例的可迭代对象multiprocessing
?
python - 如何在进程之间正确共享 Manager dict
我想做的是在子类之间共享一个字典Process
,当一个进程更新字典时,另一个进程会被通知使用它。这在下面的代码中进行了说明,其中MyProducer
开始填充字典并在每次迭代中触发一个事件来通知MyConsumer
处理字典。除了字典MyConsumer
为空的部分之外,一切都有效......
输出是
更新
我的目的是了解为什么字典不适用于 Process 子类。我知道您可以在互联网上找到的所有有效案例。实际上我有一个很好的解决方案,只需将 dict 替换为 queue,我想了解为什么 dict 不起作用。
python - 多处理代理:字母 getters 自己返回代理
我有一个复杂的不可拾取对象,它具有复杂且不可拾取类型的属性(通过 getter 和 setter 定义)。我想为对象创建一个多处理代理以并行执行一些任务。
问题:虽然我已成功使 getter 方法可用于代理对象,但我未能使 getter 为不可选择的返回对象返回代理。
我的设置类似于以下内容:
我知道我可以在向管理器注册方法时指定方法的结果类型。也就是说,我可以
我很清楚,我的解决方案不起作用,因为该方法适用于所有属性,而我只希望它在访问属性时__getattr__
返回一个代理。我怎么能做到这一点?B
a
作为一个附带问题:如果我从 的方法中删除*args
参数 ,我会收到一个错误,即使用错误数量的参数调用它。为什么?我该如何解决这个问题?__init__
B
python - Python 多处理:将任务异步分配给管理器
我需要在不同的进程中保存python对象的实例,调用这些对象的方法并异步收集结果。我的方法是为每个进程和对象创建一个管理器,然后通过管理器调用相应的方法:
尽管现在每个实例都在不同的进程中,并且作业在这些不同的进程中执行,但对象初始化和昂贵的作业都是一个接一个地发生。也就是说,输出类似于
而我想看到类似的东西
我怎么能到那里?有没有call_asynchronously
我可以使用的方法或类似的东西?(我在多处理模块的文档中没有找到类似的东西。)
请注意,经典进程池在这里不是一个选项,因为我需要在多个昂贵的作业之间保持内存中的远程实例不变。
python - 如何加速多处理管理器?
我创建了自己的经理,因为我最终需要将类传递给不同的进程。我使用以下代码做到了这一点。
问题是模型的每次迭代运行大约需要 0.12 秒,但如果我在没有多处理和管理器的情况下运行模型,并且只是类的正常初始化,它会在大约 0.07 秒内运行。知道如何加快多处理实现吗?谢谢你。
python - multiprocessing.Process 不做任何事情
我正在尝试使用此链接https://pymotw.com/2/multiprocessing/basics.html中给出的示例来了解在 python 中使用多处理的并行处理。这是代码:
当我执行此代码时,我的 Jupyter 笔记本中没有任何输出。我还尝试了其他功能,但没有得到任何输出。我的python版本是3.8.5。
谢谢你。