问题标签 [multiprocess]

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 投票
2 回答
617 浏览

unix - 信号量的简单测试

我正在尝试创建一个简单的程序来测试信号量。我正在分叉进程并在每个进程的关键部分折磨变量 c 的值,但我得到的 c 的值仍然是 1 而不是 2。即使 mmap() 未注释。谁能向我解释我做错了什么?任何帮助,将不胜感激。我是这方面的新手。非常感谢您的宝贵时间。

我通过将 pshared 参数设为 1 尝试了另一种方法,但它仍然不起作用。我也尝试过 sem_op 但它仍然不起作用。

0 投票
1 回答
118 浏览

multithreading - 多进程 IO 比多线程 IO 快

我有一个基于命令行选项执行以下操作的测试程序:

1)fork多个进程,每个进程完全顺序读取同一个文本文件

2)创建多个线程,每个线程完全顺序读取同一个文本文件

我注意到多线程方法比多进程方法多花费大约 35% 的时间。

为什么多进程 IO 比多线程 IO 快?

机器配置:8GB RAM,4 核,

下面是代码和测试结果:

多进程花费的时间:

时间 ./io_test p 20

真实 0m26.170s 用户 1m40.149s 系统 0m3.360s

多线程耗时:

时间 ./io_test t 20

真实 0m35.561s 用户 2m14.245s 系统 0m4.577s

0 投票
1 回答
1898 浏览

python - 将python脚本中的所有cpu核心用于一个进程

我想在 python 脚本中使用所有 cpu 我发现一些代码相同:

但它与 cpu 不匹配 p1 从 1,2,3,4,5 .... 开始写入 p2 不继续 p2 也从开始 1,2,3,4 开始所以结果是:1122334455

我如何将2个cpu核心匹配在一起?我想用我的电脑最快的速度写文件,我使用 i7 cpu,我怎么能全部使用

0 投票
1 回答
4169 浏览

python - python多处理冻结

我正在尝试用 Python 实现多处理。它在合并非常快速的任务时起作用,但是在合并较长的任务时冻结。请参阅下面的示例:

在这个例子中,如果我在 for 循环中使用较小的数字(比如 9999999),它就可以工作。但是当运行 99999999 时,它会冻结。我尝试依次运行两个进程 (iter_count(1)iter_count(2)),大约需要 28 秒,所以这并不是一项大任务。但是当我将它们汇集在一起​​时,它会冻结。我知道 python 中存在一些围绕多处理的已知错误,但是,在我的情况下,相同的代码适用于较小的子任务,但对于较大的子任务则冻结。

0 投票
2 回答
511 浏览

python - 如何读取文件并加载到多进程中的列表

我需要读取的数据文件太大,将其加载到列表中需要很长时间。我怎样才能使用多进程呢?换句话说,我想并行化进程文件读取并加载到列表中。能否请你帮忙。

基本上,我有一个数据表,我需要将其加载到列表中,如下所示。读取文件不需要时间,但将其加载到列表 (myList) 大约需要 1 分钟。那么,是否可以并行化:

一种特别的方式可能是(假设文件有 2M 行,因此 len(lines) = 2M),首先将 1M 加载到 myList1,然后将第二个 1M 并行加载到 myList2,然后合并它们,myList = myList1+myList2。但这听起来不是最佳做法。

0 投票
1 回答
197 浏览

python - 使用池从进程打印到屏幕

我一直在尝试打印以筛选由 Pool 生成的进程中的内容。不幸的是什么都没有出现!我需要这个,因为我将有 4 个进程同时运行很长时间,我需要得到一些估计并同时打印一些信息。

我一直在浏览试图自己弄清楚,但我不明白这是否真的可能或如何做到。使用进程而不是池?任何帮助和代码将不胜感激!

这是一个非常简单的例子,我很乐意让它工作!

我希望在终止池并打印“res”之前打印“printer”所做的事情。

0 投票
1 回答
221 浏览

python - Shared Persistent Storage in Python

Several processes are each writing a file to a directory. The goal is to control the size of the directory such that whenever it reaches a size (S), all processes stop writing to the directory and discard the file they are about to write.

If the size then becomes lower than S because some of those files were removed, the processes will resume writing files.

It seems that I need inter-process locking to achieve this design. However, I thought maybe there's an easier way, since inter process locking is not readily available in python and obviously there's contention between processes.

Python 2.7 Platforms (Win, Mac, Linux)

0 投票
0 回答
224 浏览

delphi - Delphi 检测嵌入式应用程序中的击键

我正在开发一个多进程应用程序,其中每个文档都在一个新进程中打开。它的行为类似于谷歌浏览器。

一切正常,除了这个:

当嵌入式应用程序中的任何控件处于活动状态时,主窗口(包含嵌入式窗口)不会接收击键(例如 Ctrl + N 等)。我理解这样一个事实,嵌入式窗口在不同的进程中运行,这就是它不起作用的原因。

我需要做什么:

  • 主窗口应检测嵌入窗口中按下的击键
  • 如果主窗口为击键分配了某些内容,则主窗口应该接收键盘快捷键而不是嵌入的表单。

一些重要的细节:

  • 我可以控制两个进程的源代码(这是同一个 exe,具有不同的行为)
  • 我正在使用击键动作
  • 更新:我将 WM_COPYDATA 用于 IPC(通过发送记录)
  • 更新:只有一个 UI 进程(又名主窗口)

嵌入代码:

此代码将其他进程的窗口嵌入到主 UI 窗口中。它由 WM_COPYDATA 处理程序根据接收到的值直接调用。

这是子进程通知主窗口的方式:

到目前为止我有什么?

我将 WM_COPYDATA 用于 IPC。

目前还没有代码,只是一个想法,将热键列表传输到嵌入式表单,并将它们注册为那里的操作。当在嵌入表单中执行操作时,击键将被发送到主表单。

这个想法不是一个优雅的解决方案,我想知道是否有更好的解决方案,如果有,那会是什么。

0 投票
1 回答
4223 浏览

python - Python多处理帮助在条件下退出

我在 Python 中的多处理方面打破了我的牙齿,但我没有任何运气围绕这个主题。基本上我有一个运行耗时的程序。我需要在 1 到 100 的范围内运行它,但是一旦满足我正在寻找的条件,我想中止所有进程。条件是返回值 == 90。

这是一个非多进程代码块。谁能给我一个例子,说明他们如何将其转换为多进程函数,一旦满足“90”的条件,代码将退出所有进程?

编辑:

我在测试第三版时遇到了这个错误。知道是什么原因造成的吗?

0 投票
1 回答
107 浏览

python - 从同一进程的线程中杀死所有线程和进程

我有一个产生 2 种线程类的进程。一个线程负责消费一个job_queue(这个类的100个线程通常在运行)。第二个线程是一个杀死线程。我正在使用从thread2设置的result_done标志,问题是我的thread1等待X秒,然后检查是否设置了result_done标志。

现在,如果 maxtimeout 设置为 500 秒,并且我从另一个线程设置了 result_done 标志,则该线程将在退出之前等待 500 秒(如果队列中没有数据)。

我想要实现的是,一旦从进程的任何线程设置了 result_done 事件,所有线程都会与当前进程一起优雅地终止,正确终止 db、websocket、http 连接等。

我正在使用 python 多进程库来创建产生这些线程的进程。

更新:所有线程都是 daemon=True 线程。