问题标签 [python-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.

0 投票
0 回答
545 浏览

python - 使用多处理时 Django 1.7 和 Python 3.4 中的 AppRegistryNotReady

在 Django 视图中,我生成了一个线程(threading.Thread 类),该线程又创建了一个由 5 个工作人员组成的多处理池。是的,我知道使用像 Celery 这样的任务队列通常是公认的做事方式,但在这种情况下,我们需要线程/多处理。

线程和每个多进程工作人员都访问数据库中的项目。但是,在 Thread 或 Worker 中对 Django 模型进行任何调用都会导致“django.core.exceptions.AppRegistryNotReady:尚未加载模型”异常。

这是完整的堆栈跟踪:

奇怪的是,我在堆栈跟踪中没有看到我的代码的任何部分。

我已经尝试在 Thread init 中执行 django.setup() ,并且在工人开始的方法开始时,仍然没有成功。

在我的模型中,我从未尝试从数据库中读取任何内容,例如对用户模型执行外键的常见问题。


编辑:

我可以通过将 django.setup 放在 Simulation 类下而不是将其放在 init 方法中,从而使数据库查询在 Thread 中工作。但是我仍然对工人中的查询有疑问。

编辑2:

如果我修改 Python 的 queue.Queue 文件并将 django.setup() 调用放在 get 函数中,一切都会很好。但是,这不是一个有效的解决方案。有任何想法吗?

编辑3:

如果我在 PyCharm 中运行测试,那么与这个问题相关的测试就可以工作。在 PyCharm 之外的普通命令行中运行测试(或从服务器 [django 测试服务器或 CherryPy] 运行视图服务器)会导致上述错误。


如果有帮助,这里是 GitHub 上的 views.py 的链接。

https://github.com/NAVADMC/SpreadModel/blob/b4bbbcf7020a3e4df0d021942ddcc5039234bd88/Results/views.py

供将来参考(在我们修复错误之后),您可以在提交 b4bbbcf7 上看到奇怪的行为(上面链接)。

0 投票
0 回答
87 浏览

python - Python 进程池未创建预期的进程数

我正在尝试使用 python 的 pool 模块编写一个简单的程序。这是我的代码:

当我运行这个程序时,我期望看到 4 个不同的进程 id 被打印出来,每个创建的子进程一个。我选择的块大小为 1,因此列表中的每个项目都进入一个单独的进程。

但是,正在打印的进程 ID 是相同的。我得到以下输出:

我是不是在这里搞错了。请任何人都可以对此有所了解。提前致谢。

0 投票
1 回答
3720 浏览

python - Python:如何并行运行两个函数

这是我的程序的结构:

我怎样才能做到这一点?

0 投票
2 回答
348 浏览

python - 使用多处理用Python读取多个文件有意义吗?

我打算使用多处理来读取一组具有 Python 多处理功能的小文件。然而,这在某种意义上对我来说很尴尬,因为如果磁盘是旋转的,那么瓶颈就是旋转时间,即使我使用多个进程,总读取时间应该与单进程读取相似。我错了吗 ?你有什么意见?

另外,您是否认为使用多处理可能会导致文件的交织读取,因此这些文件的内容会以某种方式倾斜?

0 投票
1 回答
1046 浏览

python - 记录器不适用于 python 多处理

我正在使用 python 多处理编写一个测试程序。我正在使用记录器来记录所取得的进展。但是记录器似乎不起作用。它不会从子进程中记录或打印。无法弄清楚出了什么问题。用普通的打印语句替换记录器也无济于事。下面是我的代码:

我得到的输出如下:

它没有记录“'****Inside f..******'”(来自函数f)请任何人帮助我弄清楚我做错了什么。使用多处理进行日志记录似乎是一个难题:(我使用的是 Python 2.6.6。操作系统是 windows-32bit/64 位。

0 投票
1 回答
1840 浏览

python - python多处理。长时间执行后,池卡住了

我正在开发一个分析大文件的工具。为了更快地做到这一点,我在它上面引入了多处理,一切似乎都工作正常。为了做到这一点,我正在使用 multiprocessing.pool 创建 N 个线程,它们处理我之前创建的不同工作块。

如您所见,这是标准池执行,没有特殊用途。

最近,当我运行大量数据时,我发现了一个问题。16 个线程的标准执行大约需要 2 个小时,但我有一个特殊情况,需要大约 8 个小时,因为它的文件数量和大小都非常大。

问题是最近我发现当我执行这个案例时,执行运行良好,直到完成,除了一个被卡住的孩子之外,大多数孩子都能正常完成

由于这个孩子没有完成父母不会醒来并且执行停止。

这种情况仅在输入文件非常大时才会发生,所以我想知道是否存在任何可能导致此问题的默认超时。

我正在使用 python 2.7 多处理 0.70a1

我的机器是centos 7(32核,64GB RAM)

在此先感谢您的帮助

霍尔迪

0 投票
1 回答
635 浏览

python - 使用 Python 的 Pool map 方法时无法返回自定义对象

我正在尝试使用多处理在 python 中编写一个简单的测试程序。我正在使用 Pool.map() 。对它,我传递了应该由子进程调用的方法。它可以正常工作,并且当返回类型是 python 内置类型(例如字符串、日期时间等)时,我得到了预期的结果。但是,当我使用自定义类作为返回类型时,我的进程就会挂起。不确定我是否做对了,任何建议将不胜感激。这是我的代码如下:

我正在使用 Python 2.6.6。操作系统是 windows-32 位/64 位。

0 投票
1 回答
1566 浏览

python-multiprocessing - Python multiprocessing.pool 顺序运行进程

我对 python 尤其是“多处理”模块很陌生。但是,我设法编写了一个非常简单的脚本来在 24 个 CPU 上运行多个进程(比如 100 个)。但是,我注意到该过程不是按顺序运行,而是随机运行。有没有办法让进程按顺序运行。这是我的代码:

运行 python 代码后,我执行 'ps -ef | grep 我的名字'。而不是得到:

我正进入(状态:

知道为什么命令不按顺序运行吗?

0 投票
1 回答
410 浏览

python - 如何在多处理中编排流程?

我正在编写一个程序来multiprocessing.Queue并行处理多个进程。我越深入到编排部分,我理解的就越少。

我想要实现的是启动几个流程并确保所有流程都已完成,然后再继续进行。这听起来像是一份工作.join()

我最终测试了以下演示脚本(在 Linux 上运行):

我期望该功能启动 3 次,立即打印“hello”消息,然后休眠。一旦他们都完成睡眠,最后的消息(“结束”)就会被打印出来。

我实际得到的是:

运行脚本时,它会在第三个“hello”和第二个“joining”之间等待。

我应该如何设计多处理代码,以便实现预期的编排,如上所述?

0 投票
1 回答
427 浏览

python - Python multi processing start the script over again?

I am using multi processing in Python. The following is the demo of my code:

In function main:

And in function proc1 and proc2:

So what I expect to see as output is:

Main program starts here.

Proc1 starts from here.

Proc2 starts from here.

However, what I got is:

Main program starts here.

Main program starts here.

Main program starts here.

It seems that both the proc1 and proc2 start the main rather than the procs.

May I know what is wrong with my code?

Many thanks.