问题标签 [multiple-processes]
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.
distributed-computing - 为什么简单的 3 路多数投票不能解决拜占庭错误?
我最近读了很多关于拜占庭容错的论文。有一个常见的证明是需要 3m+1 台计算机来处理 m 个拜占庭错误。一般证明是这样的:
有三个“将军”:A、B 和 C。假设将军像这样交流,其中 C 是“叛徒”:
因此,我们不能保证大多数参与者会达成共识。
我有点理解这个证明,但它似乎错过了一个重点。A、B、C不也做自己的内部计算怎么办吗?由于A&B是这里的“忠诚”将军,看来“正确”的行动是进攻。在决定做什么时,不允许 B 考虑他自己的计算吗?在这种情况下,他可以轻松打破相互冲突的 A&C 输入之间的联系并决定发起攻击。然后,A&B都出击了,我们解决了问题。这是一个不同于经典拜占庭将军问题的问题吗?
python - 该程序中的某些进程是否可能比其他进程更快完成?
我有一个设计为高度可并行化的程序。我怀疑某些处理器比其他处理器更早地完成了这个 Python 脚本,这可以解释我在此代码上游观察到的行为。此代码是否有可能允许某些 mpi 进程比其他进程更快完成?
python - mpi4py 将值 id 附加到每个通信器实例的列表中
如果我想列出每个通信者的变量 id,我该怎么做?下面是一个试图证明这个想法的尝试:
c - Linux 中的进程:让每个子进程休眠随机秒数
我想让一个变量(属于一个进程)在每次新进程启动时获得一个新的随机值。
我需要这个随机生成来使每个创建的进程睡眠随机数秒。在我使用的程序开始时,在我使用
srand(time(NULL))
的进程将运行的函数中
int sleeptime = rand() % 16 + 5; //that's because I need values from 5 to 20
.
我试图实现这样的事情,但我看到对于每个进程,变量的值都是相同的。
我认为,如果我将当前时间(以毫秒为单位)(各个进程开始的时间)作为 srand(..) 的参数,我会得到随机值。问题是我没有找到任何相关信息。不同页面上唯一建议的是众所周知的:(srand(time(NULL));
其中 time(NULL) 以秒为单位返回当前时间)。
请你给我一些方法来实现这个?先感谢您。
django - 如何确定 mod_wsgi 的最有效线程和进程数?
我通常使用 AWS Elastic Beanstalk、Heroku 和 Microsoft Asure 来托管我的 Django 项目。我也经常使用 MySQL。但是,我很难确定 mod_wsgi 设置的有效线程数和进程数。预先感谢您的信息。
javascript - 在 node.js 中生成一个新的独立进程
有没有办法从当前运行的脚本中产生一个新的独立进程?
我正在尝试从已经运行的脚本运行新脚本。新脚本应该独立于调用它的脚本。
bash - 在 bash 中启动 n 个子进程并等待一切完成
我想测试几个 ffmpeg 设置并将多个命令作为“子进程”运行。不过,我不想一次启动超过 4 个进程。有什么好方法可以做到这一点?也许像在 bg 中运行进程之前捕获进程 ID 并等到它们不再在进程列表中?还是 xargs?
这是没有“排队”的脚本:
node.js - 为什么我的节点 child_process 提前终止?
我正在尝试运行一个运行 docker 容器的异步节点 child_process。
temp.js 包含一个for loop
. 有时它会运行一半的循环,有时会运行三分之一等等。然后它会终止。
我可以让它工作,child_process.execSync
但这有点令人讨厌。为什么它会那样退出,我如何让它活着?
python-3.x - Python SQLite3 使用多个进程进行并发读取:在大数据集上经常挂起而不会引发错误
概述:
我正在尝试为财务数据分析项目创建大量变量(宽数据集)。我有一个包含 140,000 行的 pandas 数据框“position_history”,每行包含一只股票和买卖日期/价格。
我有一个函数 create_domain 接受输入(股票、买入日期、卖出日期)和:
- 对我的 SQLite3 数据库进行查询,以在给定这些日期的情况下提取该股票的时间序列。
- 使用时间序列构造我的变量
我使用 df.apply 将函数 create_domain 应用于 position_history
当我按顺序运行我的代码时,构建变量需要大约 4 个小时,我想使用多个进程来加快这个速度,因为我必须这样做很多次并且可能需要更广泛的数据集。
对于多个进程,我将 position_history 垂直拆分为多个块,创建一个数据帧列表。我将此列表传递给 joblib(多处理)。我的代码几乎总是无限期挂起而不会引发任何错误(但有时会在小样本上运行)。
我的怀疑是我的工作进程试图同时读取同一个 SQL 表时出现了问题。
我尝试了以下补救措施:
在函数 create_domain 中打开了一个新连接(sqlalchemy.create_engine),因此每个工作进程都有自己的引擎/连接
遵循 sqlalchemy 文档(http://docs.sqlalchemy.org/en/latest/faq/connections.html#how-do-i-use-engines-connections-sessions-with-python-multiprocessing-or-os-fork )
- 将 poolclass 更改为 NullPool,这会禁用一个引擎内的多个连接,强制引擎为每个事务打开和关闭一个新连接
- 以防万一,为每个孩子使用 engine.dispose() 以确保刷新所有引擎连接并获取新连接
- 注意 - 这些解决方案旨在强制 sqlite3 不跨线程共享任何连接,这是行不通的(SQLAlchemy 是否可以在多个 Python 进程之间共享 SQLite 数据库?)
在 joblib 下(https://pythonhosted.org/joblib/parallel.html)
- 尝试使用“线程”后端而不是“多处理”。这有效,但并没有大大加快代码速度,从阅读此处的线程(Multiprocessing vs Threading Python)来看这是有道理的,因为线程实际上不允许您使用多个cpu。
- 尝试使用 memmaping 技术,因为 pandas 中有一些 numpy;我不认为这对我来说是一个相关的修复
相关的stackoverflow条目:
- 我想使用多个进程,而不是讨论的多线程:
python multiple threaded processes for running executables;
Python sqlite3 和并发;
SQLite3 和多处理;*我不明白这个的最后一个答案
- 我只是想读,而不是写,所以我不确定是否需要管理 SQLite 锁定机制,如所讨论的: SQLite 适合并发读取?; 用 sqlite3 并发写
- 这篇文章说它理论上应该可以工作:sqlite3 concurrent access;注意——我认为 WAL 模式对我没有帮助,因为我只是在阅读。
(伪)代码片段
我对joblib的调用:
我的 create_domain 函数:
摘要:我的代码永远挂起,使内核崩溃,并且没有引发任何错误。我将不胜感激任何见解:
- 为什么会这样?
- 我该如何解决?
- 有没有更好的方法来做我想做的事情?我尽我所能对我的 SQL 查询进行矢量化和优化。
- 这是 SQLite3 的问题吗?像 MySQL 这样的东西会更好吗?
- 有小费吗; 我是编码/python/数据科学的新手。
详细信息:我在一个超级计算机集群上,运行 Linux,并在 Python 3.4.3 上使用 iPython。
这是我的第一个 stackoverflow 问题 - 提前为失礼道歉并感谢您的帮助!
python - python多处理脚本不退出
我试图让 python2.7 多处理模块更加舒适。所以我编写了一个小脚本,它将文件名和所需的进程数作为输入,然后启动多个进程以将函数应用于队列中的每个文件名。它看起来像这样:
该脚本工作正常,并且每次旧进程完成时都会启动一个新进程(我认为这就是它的工作原理?),直到队列中的所有对象都用完。但是,脚本在完成队列后不会退出,而是处于空闲状态,我必须使用Ctrl+C
. 这里有什么问题?
感谢您的回答!