问题标签 [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.
vb.net - 如何创建一个可以等待多个进程退出的函数?
我正在创建一个 Windows 服务,它将为我想要监控的特定进程写入所有开始时间和退出时间。问题是当我试图监视等待退出的进程时,我不知道如何等待多个进程退出。以下是我编写流程开始时间的代码。
有没有办法监控多个进程退出?提前致谢。
c - 与 C 的管道问题。是否可以执行额外的进程?
我不知道这段代码有什么问题。它的输出有多个错误。该程序应该模仿 UNIX shell。只要它不包含任何管道,它就可以正常运行任何命令。然而,当我包含管道时,有趣的事情开始发生。
例如:当我输入sort < myshell1,c | grep main | cat > o.txt
它创建了一个额外的过程。您可以看到这一点,因为在代码中,perror(in)
被执行了 4 次(根据 GDB):
然后,程序进入新行并且不打印 COP4338$: 就像它应该的那样。表现出未定义的行为。我对为什么会发生这种情况的猜测是因为第四个进程也在继续,因此就像父进程一样返回到 main(),但我无法确定它为什么会被创建。
当我尝试运行时,也会出现未定义的行为ls -l | cat > o.txt
这是 GDB 的输出:
至于试图解决这个问题,我还不确定是什么原因造成的。我尝试使用 gdb 调试器通过键入“set follow-fork-mode child”并在第三个子进程的第一行使用断点来调试第三个子进程,但没有任何反应。我只能通过这样做来调试第一个子进程。
该程序应该将“ int main (int argc, char* argv [])
”打印到o.txt,但o.txt根本没有改变。
对于那些好奇的人,函数 process() 会扫描构成命令的参数字符串,并根据程序看到的符号设置标志。
docker - Docker 容器没有正确使用 CPU
单个 docker 容器适用于较少数量的并行进程,但是当我们将并行进程的数量增加到 20-30 时,进程执行速度会变慢。进程越来越慢,但 docker 仍然只使用了 30-40% 的 cpu。
我已经尝试过以下事情以使 docker 使用正确的 cpu 并且不减慢进程 -
- 我已将 cpu 和 ram 明确分配给 docker 容器。
- 我还使用 ulimit 增加了文件描述符的数量、进程数量和堆栈大小。
即使做了这两件事,容器仍然没有正确利用 cpu。我正在使用 docker exec 在单个运行的容器中启动多个进程。是否有任何有效的方法可以使用单个 docker 容器来执行多个进程或使容器使用 100% 的 cpu?
我正在使用的配置是
服务器 - aws ec2 t2.2Xlarge(8 核,32 GB 内存)
Docker 版本 - 18.09.7
Os- Ubuntu 18.04
spring - Spring Application-启动后台进程的最佳方法是什么?
我正在使用 Kinesis 在 Spring Boot 应用程序中使用流。我为此使用 AWS 提供的 KCL 并启动它,您定义一个 Kinesiscom.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker
实例并调用.run()
它。我不想为这项任务使用弹簧集成。
我想在这里构建一个抽象,以便开发人员可以创建多个工作人员并让它们在应用程序启动期间或之后自动运行,然后.shutdown()
在应用程序终止时调用相应的方法。现在我通过@Component
为每个 Worker 创建一个然后run()
在@PostConstruct
and上来做到这一点@PreDestroy
。
有没有更好的办法?
c - 为什么我的孩子有时只打印文件中的特定行?
我正在尝试使用父进程读取文件中的特定行来读取一行,并使用子进程读取其他行。简单文本文件的内容为:“这是第一行\n”、这是第二行\n”等。
但是,我发现当我多次执行我的程序时,我的孩子并不总是从我的文件中打印该行。printf("Entering child\n") 总是被执行,表明我可以正常进入子进程。
为什么这只是有时有效?
从上面的代码中,我有时会打印“这是第二行”(来自父级)和“这是第三行”(来自子级),或者有时只打印“这是第二行”。目标是让两者都打印出来。
python - 为什么使用 docker-compose 在 Docker 容器中 Python 进程的父 pid 有时为 0?
直接从 a 运行 python shell 时docker-compose run
,父 PID 显示为 0,感觉很不对劲。我在下面整理了一个非常简单,可重现的案例:
当我在其中运行 python shell 时,它的 ppid 为 0;同样以这种方式运行的任何 python 代码(例如,如果运行测试pytest
):
当我从 bash shell 中运行 python shell 时,我看到了一个更理智的值......
当我直接在我的主机上运行 python shell 时,我还看到了更多理智的 PID 值......
我确信这是关于如何docker
处理正在运行的容器中的进程的一些奇怪行为,但在我看来,PID 不应该是 0。这是预期的行为吗,如果是,是否有运行 Python 代码的解决方法这种依赖父PID的方式?
python - Gunicorn 的 worker_exit
我正在使用Gunicorn部署 Django 应用程序。
在 util.py 中定义了一个全局单例变量:
我想close_producers
在我的应用关闭时打电话。我在gunicornconf.py中添加了以下内容:
我的理解是,有一个主进程,多个从主进程分叉的工作进程。在每一个进程中,util.py
都被导入到这个进程中。SNS_PRODUCERS
因此,这些进程中有多个,一对一SNS_PRODUCERS
的工作进程或主进程。
每个工作进程都有其自己的 worker_exit钩子 。主进程有它自己的 child_exit钩子。
当一个工作人员关闭时,它worker_exit
会被调用,然后关闭ITS OWN SNS_PRODUCERS
。其他SNS_PRODUCERS
的仍然开放。
我对吗?欢迎任何更正。
java - 用于多进程读写的 Java 文件锁
在我的应用程序中,多个进程正在尝试访问文件以进行读写。每个应用程序都有一个线程。我需要确保没有 2 个进程同时访问该文件。我在 JDK 中使用 FileLock。这很好用,当一个进程已获得锁定并且其他进程尝试访问文件(用于读取或写入)时抛出异常,说明文件已被其他进程锁定。
现在我需要确保,对于第二个进程,而不是抛出异常线程应该等到第一个进程释放锁,一旦锁被释放,继续它的工作。
我怎样才能做到这一点。所以,胖子我一直没能想出办法做到这一点。
python - 有没有办法像 elixir 一样在 python 中重新启动和更新正在运行的进程?
我一直在寻找 elixir 并控制崩溃、实时更新和动态重启进程。有没有一个lib或一种方法可以在python中做到这一点?
c - 如何运行多个具有不同任务的孩子?
我的程序必须创建多个孩子,我从终端获取孩子的数量。然后,我需要将它们分组,每个组都有不同的任务。
我创造了孩子,但问题是我不能给他们分开的任务,我不能区分孩子。我唯一能做的就是,每个孩子都在同一个部分工作(比如打印 pids)。
我怎样才能将它们分开并赋予它们特定的任务?
例如,前 4 个孩子应该调用一个函数,其他 3 个应该打印一些东西,其他 3 个应该写入一个文件等。