问题标签 [multiprocessing]
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 - 带有扭曲反应器的 Python 多处理
我正在使用必须循环执行某些任务的 xmlrpc 服务器。我使用 twisted 作为 xmlrpc 服务的核心,但我遇到了一个小问题:
我应该如何加入这两个过程,以使它们各自的加入不会阻塞?
(我对“加入”感到很困惑。为什么它会阻塞,我已经用谷歌搜索了但找不到关于加入使用的有用解释。有人可以向我解释一下吗?)
问候
c - 多个 fork() 并发
你如何使用 fork() 命令来生成 10 个进程并让它们同时执行一项小任务。
并发是一个有效的词,许多展示如何使用 fork 的地方在他们的演示中只使用一次 fork() 调用。我以为你会使用某种 for 循环,但我试过了,在我的测试中似乎 fork() 正在产生一个新进程,开始工作,然后产生一个新进程。所以它们似乎是按顺序运行的,但是如果有意义的话,我怎么能同时分叉并让 10 个进程同时完成工作呢?
谢谢。
更新:感谢大家的回答,我想我最初只是误解了 fork() 的某些方面,但我现在明白了。干杯。
python - python的多处理池的键盘中断
如何使用 python 的多处理池处理 KeyboardInterrupt 事件?这是一个简单的例子:
运行上面的代码时,KeyboardInterrupt
当我按下 时会引发^C
,但该过程只是在此时挂起,我必须在外部将其杀死。
我希望能够随时按下^C
并导致所有进程正常退出。
python - 如何分析并行化的 Python 脚本?
假设我有一个名为的 python 脚本my_parallel_script.py
,它涉及使用multiprocessing
并行化几件事,我使用以下命令运行它:
这只会为父进程生成分析输出。在子进程中进行的调用根本不会被记录。是否也可以分析子进程?
如果唯一的选择是修改源,那么最简单的方法是什么?
python - 分析 python 多处理池
我正在尝试在多处理池中的每个进程上运行 cProfile.runctx(),以了解我的源中的多处理瓶颈是什么。这是我正在尝试做的一个简化示例:
不幸的是,尝试在分析器中执行“result = square(i)”不会影响调用范围内的“result”。我怎样才能完成我在这里尝试做的事情?
multiprocessing - InterlockedIncrement 与 ++
InterlockedIncrement 是如何工作的?
是否只关注多处理器系统?
它有什么作用,禁用所有处理器的中断?
python - 使用 python.multiprocessing,如何在当前进程中创建代理以传递给其他进程?
我正在使用multiprocessing
Python 中的库。我可以看到如何定义从函数返回的对象应该创建代理,但我希望将当前进程中的对象变成代理,以便我可以将它们作为参数传递。
例如,运行以下脚本:
...我得到以下输出...
...但我希望最后一行输出来自_MainProcess
.
我可以创建另一个进程并从那里运行它,但我试图将需要在进程之间传递的数据量保持在最低限度。该Manager
对象的文档提到了一种serve_forever
方法,但似乎不受支持。有任何想法吗?有人知道吗?
python - 具有多处理工作人员的扭曲网络客户端?
所以,我有一个使用 Twisted + Stomper 作为 STOMP 客户端的应用程序,它将工作分配给 multiprocessing.Pool 的工作人员。
当我只使用 python 脚本启动它时,这似乎工作正常,它(简化)看起来像这样:
当它被打包用于部署时,我想我会利用 twistd 脚本并从 tac 文件运行它。
这是我看起来非常相似的 tac 文件:
为了说明起见,我折叠或更改了一些细节;希望它们不是问题的本质。例如,我的应用程序有一个插件系统,池由一个单独的方法初始化,然后使用 pool.apply_async() 将工作委托给池,传递我的插件的一个 process() 方法。
因此,如果我运行脚本 (stompclient.py),一切都会按预期工作。
如果我在非守护程序模式(-n)下运行twist,它似乎也可以正常工作:
但是,当我在守护程序模式下运行时它不起作用:
该应用程序似乎可以正常启动,但是当它尝试分叉工作时,它只是挂起。通过“挂起”,我的意思是似乎从未要求子进程做任何事情,而父进程(称为 pool.apply_async())只是坐在那里等待响应返回。
我确信我用 Twisted + 多处理做了一些愚蠢的事情,但我真的希望有人可以向我解释我的方法中的缺陷。
提前致谢!
python - python多处理管理器和复合模式共享
我正在尝试通过多处理管理器共享复合结构,但在尝试仅使用一种复合类方法时,我感到“ RuntimeError: maximum recursion depth exceeded ”有问题。
该类是来自code.activestate的令牌,并在包含到管理器之前由我测试。
在将类检索到进程中并调用其addChild()方法时,我保留了RunTimeError,而在进程之外它可以工作。
复合类继承自一个 SpecialDict 类,该类实现了一个 ** ____getattr()____ ** 方法。
有可能在调用addChild()时,python 的解释器会寻找不同的 ** ____getattr()____ **,因为经理没有代理正确的解释器?
如果是这样我不清楚代理该类/方法的正确方法
以下代码完全重现了这种情况:
1)这是manager.py:
2)我想在这个consumer.py中使用复合:
3)通过controller.py运行所有启动:
按照 AlberT 的建议,查看有关如何为 CompositeDict() 类进行代理的相关问题。
tgray给出的解决方案有效,但无法避免竞争条件