首页 > 编程问答 >同时运行多个Python程序的最佳方法

同时运行多个Python程序的最佳方法

时间:2024-07-29 14:12:27浏览次数:11  
标签:python multithreading asynchronous multiprocessing

我有一个 python 程序,我想同时运行多个具有不同参数的实例。这些实例彼此之间不进行通信。在单独的终端中运行每个实例太乏味了。我考虑使用多处理模块将每个实例作为单独的进程运行,但是我希望能够随时停止和重新启动某些单独的实例,而不会中断其他正在运行的实例。是否有任何流程管理器或类似的东西可以用来做到这一点?


可以使用多种方法同时运行具有不同参数的多个 Python 程序实例,并且能够根据需要停止和重新启动它们,而不会影响其他实例。以下是两种流行的选项:

1. 使用任务队列(例如 Celery)

  • 如何运作: 任务队列允许将任务(在本例中为的 Python 脚本实例)排队,并在工作进程池中异步执行它们。可以拥有多个工作进程来并行处理任务。
  • 优点:
    • 稳健性: 如果一个工作进程失败,任务队列可以确保该任务由另一个工作进程处理。
    • 可扩展性: 可以轻松地通过添加更多工作进程或计算机来扩展的设置以处理更多任务。
    • 监控和管理: Celery 提供了用于监控任务进度和管理工作进程的工具,例如 Celery Flower。
  • 缺点:
    • 复杂性: 设置任务队列比其他方法更复杂,需要了解消息代理(例如 RabbitMQ 或 Redis)。

2. 使用进程管理器(例如 Supervisor)

  • 如何运作: 进程管理器用于控制和管理系统上的进程,包括启动、停止和监控它们。可以将 Python 脚本配置为在 Supervisor 下运行,并且能够独立地控制它们。
  • 优点:
    • 简单性: 与设置任务队列相比,设置 Supervisor 更容易。
    • 轻量级: Supervisor 资源消耗少,使其成为管理少量进程的不错选择。
  • 缺点:
    • 可扩展性有限: 与任务队列相比,Supervisor 的可扩展性较差,这使得它不太适合处理大量进程。

下面简要介绍了如何使用 Supervisor 来实现的用例:

  1. 安装 Supervisor: bash pip install supervisor

  2. 创建 Supervisor 配置文件: 创建一个名为 supervisord.conf 的配置文件,并添加以下内容,根据的脚本和所需行为进行修改: [program:my_script] command=/usr/bin/python /path/to/your/script.py --arg1 value1 directory=/path/to/your/script/directory autostart=true autorestart=true stderr_logfile=/var/log/my_script.err.log stdout_logfile=/var/log/my_script.out.log

  3. /usr/bin/python 替换为的 Python 解释器的路径。
  4. /path/to/your/script.py 替换为的 Python 脚本的路径。
  5. --arg1 value1 替换为要传递给脚本的参数。
  6. 为要运行的每个脚本实例重复 [program:...] 部分,使用不同的名称和参数。

  7. 启动 Supervisor: bash supervisord -c /path/to/your/supervisord.conf

  8. 控制的脚本: bash supervisorctl -c /path/to/your/supervisord.conf [start|stop|restart] my_script my_script 替换为的脚本名称,以及所需的命令( start stop restart )。

这些只是两种可用于运行 Python 程序的多个实例的方法。选择的最佳方法取决于的特定需求和约束。

标签:python,multithreading,asynchronous,multiprocessing
From: 78805612

相关文章

  • 替换 Python 数据框中包含值的 <
    我有一个数据框,在某些列中存在诸如“<0.5、<10、<100”等值。如果值仅包含“<”,我想将所有这些值替换为0。我该怎么做?我对Python比较陌生。尝试使用pd.DataFrame.replace()。importpandasaspd#创建示例数据框df=pd.DataFrame({'A':['<0.5','<10',15,20],......
  • 基于funasr+pyaudio实现电脑本地麦克风实时语音识别项目语音转文本python实现
    【框架地址】https://github.com/modelscope/FunASR【简单介绍】FunASR是一个功能全面的语音识别工具包,支持多种预训练模型的推理和微调,提供高精度和高效能的语音识别服务。结合PyAudio库,可以实现电脑本地麦克风实时语音识别项目。该项目首先通过PyAudio库捕获麦克风输入的......
  • 从Python中的数据框中删除不必要的数据
    所以我这里有一个dat文件,我正在使用Python来读取它。在整个文件中,有一些不必要的行,例如BEGIN等,而我真正想开始阅读的部分是从数据帧开始。因此,我想检查在Python中执行此操作的最佳方法是什么,并且只阅读数据框何时开始?谢谢!以下是使用Python从数据......
  • Python拟合曲线
    拟合曲线多项式拟合np.ployfit(x,y,deg)importmatplotlib.pyplotaspltimportnumpyasnpx=[1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8]y=[33.40,79.50,122.65,159.05,189.15,214.15,238.65,252.2,267.55,280.50,296.65,301.65,310.......
  • 12个Python数据类型转换实战演练
    文末赠免费精品编程资料~~在Python编程中,数据类型转换是处理数据时必不可少的技能。掌握如何灵活地在不同类型之间转换,能让你的代码更加高效和灵活。下面,我们将通过一系列实战演练,学习并实践12种常见的Python数据类型转换。1.整数转字符串实战案例:将年龄转换为字符串......
  • Python全套教程,小白零基础入门必备!
    Python是一种语法简单、功能强大的编程语言,它注重的是如何高效解决问题。【教程领取方式在文末!!】正是这种简单实用的特性,让Python成为近年来最热门的编程语言之一。Python具有广泛的应用场景,包括:Web开发、数据分析、机器学习、网络爬虫、人工智能、量化交易等众多领......
  • BP神经网络及其Python和MATLAB实现预测
    BP神经网络及其Python和MATLAB实现预测引言BP神经网络(BackPropagationNeuralNetwork),即反向传播神经网络,是一种通过反向传播算法进行监督学习的多层前馈网络。这种网络能够通过不断地调整和改变神经元的连接权重,达到对特定任务的学习和优化。由于其高度的灵活性和适应性......
  • 为什么Python要对引用非容器类型的类型实现循环GC
    检查文档:支持循环垃圾收集Python对检测和收集涉及循环引用的垃圾的支持需要对象类型的支持,这些对象类型是其他对象的“容器”,这些对象也可能是容器不存储对其他对象的引用或仅存储对原子类型(例如数字或字符串)的引用的类型不需要为垃圾收集提供任何显......
  • 如何在 Visual Studio Code 中降级终端中的 python?
    我有一段代码需要运行,但它仅与tensorflow1.3、1.4和1.5兼容。我想我需要降级python才能运行它,但是终端有python3.10我尝试创建虚拟环境失败,但终端仍然说它正在使用python3.10,所以我仍然无法运行代码有什么我可以做的吗?是对的,创建虚拟环境是运行不同Python版本代......
  • python-小李帮老师改错(赛氪OJ)
    [题目描述]老师给小理发了一封电子邮件,任务如下。写一个程序,给你 n 个数,输出 X。X=num1p1​​+num2p2​​+⋯+numnpn​​。                 num1​,num2​,⋯⋯,numn​ 都是整数,p1​,p2​,⋯⋯pn​ 都是一位数。但是出现了一些玄学错误,......