问题标签 [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.
unix - 信号量的简单测试
我正在尝试创建一个简单的程序来测试信号量。我正在分叉进程并在每个进程的关键部分折磨变量 c 的值,但我得到的 c 的值仍然是 1 而不是 2。即使 mmap() 未注释。谁能向我解释我做错了什么?任何帮助,将不胜感激。我是这方面的新手。非常感谢您的宝贵时间。
我通过将 pshared 参数设为 1 尝试了另一种方法,但它仍然不起作用。我也尝试过 sem_op 但它仍然不起作用。
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
python - 将python脚本中的所有cpu核心用于一个进程
我想在 python 脚本中使用所有 cpu 我发现一些代码相同:
但它与 cpu 不匹配 p1 从 1,2,3,4,5 .... 开始写入 p2 不继续 p2 也从开始 1,2,3,4 开始所以结果是:1122334455
我如何将2个cpu核心匹配在一起?我想用我的电脑最快的速度写文件,我使用 i7 cpu,我怎么能全部使用
python - python多处理冻结
我正在尝试用 Python 实现多处理。它在合并非常快速的任务时起作用,但是在合并较长的任务时冻结。请参阅下面的示例:
在这个例子中,如果我在 for 循环中使用较小的数字(比如 9999999),它就可以工作。但是当运行 99999999 时,它会冻结。我尝试依次运行两个进程 (iter_count(1)
和iter_count(2)
),大约需要 28 秒,所以这并不是一项大任务。但是当我将它们汇集在一起时,它会冻结。我知道 python 中存在一些围绕多处理的已知错误,但是,在我的情况下,相同的代码适用于较小的子任务,但对于较大的子任务则冻结。
python - 如何读取文件并加载到多进程中的列表
我需要读取的数据文件太大,将其加载到列表中需要很长时间。我怎样才能使用多进程呢?换句话说,我想并行化进程文件读取并加载到列表中。能否请你帮忙。
基本上,我有一个数据表,我需要将其加载到列表中,如下所示。读取文件不需要时间,但将其加载到列表 (myList) 大约需要 1 分钟。那么,是否可以并行化:
一种特别的方式可能是(假设文件有 2M 行,因此 len(lines) = 2M),首先将 1M 加载到 myList1,然后将第二个 1M 并行加载到 myList2,然后合并它们,myList = myList1+myList2。但这听起来不是最佳做法。
python - 使用池从进程打印到屏幕
我一直在尝试打印以筛选由 Pool 生成的进程中的内容。不幸的是什么都没有出现!我需要这个,因为我将有 4 个进程同时运行很长时间,我需要得到一些估计并同时打印一些信息。
我一直在浏览试图自己弄清楚,但我不明白这是否真的可能或如何做到。使用进程而不是池?任何帮助和代码将不胜感激!
这是一个非常简单的例子,我很乐意让它工作!
我希望在终止池并打印“res”之前打印“printer”所做的事情。
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)
delphi - Delphi 检测嵌入式应用程序中的击键
我正在开发一个多进程应用程序,其中每个文档都在一个新进程中打开。它的行为类似于谷歌浏览器。
一切正常,除了这个:
当嵌入式应用程序中的任何控件处于活动状态时,主窗口(包含嵌入式窗口)不会接收击键(例如 Ctrl + N 等)。我理解这样一个事实,嵌入式窗口在不同的进程中运行,这就是它不起作用的原因。
我需要做什么:
- 主窗口应检测嵌入窗口中按下的击键
- 如果主窗口为击键分配了某些内容,则主窗口应该接收键盘快捷键而不是嵌入的表单。
一些重要的细节:
- 我可以控制两个进程的源代码(这是同一个 exe,具有不同的行为)
- 我正在使用击键动作
- 更新:我将 WM_COPYDATA 用于 IPC(通过发送记录)
- 更新:只有一个 UI 进程(又名主窗口)
嵌入代码:
此代码将其他进程的窗口嵌入到主 UI 窗口中。它由 WM_COPYDATA 处理程序根据接收到的值直接调用。
这是子进程通知主窗口的方式:
到目前为止我有什么?
我将 WM_COPYDATA 用于 IPC。
目前还没有代码,只是一个想法,将热键列表传输到嵌入式表单,并将它们注册为那里的操作。当在嵌入表单中执行操作时,击键将被发送到主表单。
这个想法不是一个优雅的解决方案,我想知道是否有更好的解决方案,如果有,那会是什么。
python - Python多处理帮助在条件下退出
我在 Python 中的多处理方面打破了我的牙齿,但我没有任何运气围绕这个主题。基本上我有一个运行耗时的程序。我需要在 1 到 100 的范围内运行它,但是一旦满足我正在寻找的条件,我想中止所有进程。条件是返回值 == 90。
这是一个非多进程代码块。谁能给我一个例子,说明他们如何将其转换为多进程函数,一旦满足“90”的条件,代码将退出所有进程?
编辑:
我在测试第三版时遇到了这个错误。知道是什么原因造成的吗?
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 线程。