Windows 上尝试 python 多处理时出现运行时错误

2024-03-26

我正在 Windows 机器上使用线程和多处理来尝试我的第一个正式的 python 程序。但我无法启动进程,Python 给出以下消息。问题是,我没有在main模块。线程在类内的单独模块中处理。

EDIT:顺便说一句,这段代码在 ubuntu 上运行良好。不太适合 Windows

RuntimeError: 
            Attempt to start a new process before the current process
            has finished its bootstrapping phase.
            This probably means that you are on Windows and you have
            forgotten to use the proper idiom in the main module:
                if __name__ == '__main__':
                    freeze_support()
                    ...
            The "freeze_support()" line can be omitted if the program
            is not going to be frozen to produce a Windows executable.

我的原始代码相当长,但我能够在代码的删节版本中重现该错误。它分为两个文件,第一个是主模块,除了导入处理进程/线程和调用方法的模块之外,几乎不做任何事情。第二个模块是代码的核心所在。


测试主.py:

import parallelTestModule

extractor = parallelTestModule.ParallelExtractor()
extractor.runInParallel(numProcesses=2, numThreads=4)

并行测试模块.py:

import multiprocessing
from multiprocessing import Process
import threading

class ThreadRunner(threading.Thread):
    """ This class represents a single instance of a running thread"""
    def __init__(self, name):
        threading.Thread.__init__(self)
        self.name = name
    def run(self):
        print self.name,'\n'

class ProcessRunner:
    """ This class represents a single instance of a running process """
    def runp(self, pid, numThreads):
        mythreads = []
        for tid in range(numThreads):
            name = "Proc-"+str(pid)+"-Thread-"+str(tid)
            th = ThreadRunner(name)
            mythreads.append(th) 
        for i in mythreads:
            i.start()
        for i in mythreads:
            i.join()

class ParallelExtractor:    
    def runInParallel(self, numProcesses, numThreads):
        myprocs = []
        prunner = ProcessRunner()
        for pid in range(numProcesses):
            pr = Process(target=prunner.runp, args=(pid, numThreads)) 
            myprocs.append(pr) 
#        if __name__ == 'parallelTestModule':    #This didnt work
#        if __name__ == '__main__':              #This obviously doesnt work
#        multiprocessing.freeze_support()        #added after seeing error to no avail
        for i in myprocs:
            i.start()

        for i in myprocs:
            i.join()

在 Windows 上,子进程将在启动时导入(即执行)主模块。您需要插入一个if __name__ == '__main__':在主模块中进行保护以避免递归创建子流程。

修改的testMain.py:

import parallelTestModule

if __name__ == '__main__':    
    extractor = parallelTestModule.ParallelExtractor()
    extractor.runInParallel(numProcesses=2, numThreads=4)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 上尝试 python 多处理时出现运行时错误 的相关文章

  • 如何用spaCy获取依赖树?

    我一直在尝试寻找如何使用 spaCy 获取依赖树 但我找不到任何有关如何获取树的信息 只能在如何导航树 https spacy io usage examples subtrees 如果有人想轻松查看 spacy 生成的依赖关系树 一种解决
  • 对打开文件的脚本进行单元测试

    我编写了一个脚本 它打开一个文件 读取内容并进行一些操作和计算 并将它们存储在集合和字典中 我该如何为这样的事情编写单元测试 我的问题具体是 我会测试文件是否打开 文件很大 这是unix字典文件 我如何对计算进行单元测试 我真的必须手动计算
  • 如何在“python setup.py test”中运行 py.test 和 linter

    我有一个项目setup py文件 我用pytest作为测试框架 我还在我的代码上运行各种 linter pep8 pylint pydocstyle pyflakes ETC 我用tox在多个 Python 版本中运行它们 并使用以下命令构
  • 无法安装时间模块

    我试过了pip install time and sudo H pip install time 但我不断收到错误 找不到满足要求时间的版本 从 版本 未找到时间匹配的发行版 我正在 PyCharm 中工作 但真正没有意义的是我可以在 Py
  • 如何使用 Apache Arrow 在 Windows 上使用 C++ 编写 Parquet 格式的文件?

    我正在尝试使用 C 在 Windows 上编写 Parquet 文件 我按照我找到的说明进行操作here https github com apache arrow blob master docs source developers cp
  • 如何从网站中提取冠状病毒病例?

    我正在尝试从网站中提取冠状病毒 https www trackcorona live https www trackcorona live 但我得到了一个错误 这是我的代码 response requests get https www t
  • 为 PyCharm 中的所有配置设置相同的环境变量

    我有一个与 Celery 和很多不同的工作人员一起的项目 如何避免每次将 PyCharm 中的环境变量复制粘贴到每个运行 调试配置 有什么方法可以在项目设置中设置它们吗 找到解决方案here https stackoverflow com
  • 基于 True/False 值的 Python 优雅赋值

    我想根据三个布尔值中的值设置一个变量 最直接的方法是 if 语句后跟一系列 elif if a and b and c name first elif a and b and not c name second elif a and not
  • 一起使用 Argparse 和 Json

    我是 Python 初学者 我想知道 Argparse 和 JSON 是否可以一起使用 说 我有变量p q r 我可以将它们添加到 argparse 中 parser add argument p param1 help x variabl
  • tomcat 8 无法在自由端口上启动

    PROBLEM 通过 Windows 服务停止 gt 启动 tomcat 8 失败 因为 tomcat 关闭不知何故以 不可见 状态继续侦听端口 8080 并且 tomcat 无法启动 因为它无法绑定到端口 8080 背景 我们的一个构建脚
  • 从 python 中的缩进文本文件创建树/深度嵌套字典

    基本上 我想迭代一个文件并将每行的内容放入一个深层嵌套的字典中 其结构由每行开头的空格数量定义 本质上 目标是采取这样的事情 a b c d e 并将其变成这样的东西 a b c d e Or this apple colours red
  • Matplotlib 将颜色图 tab20 更改为三种颜色

    Matplotlib 有一些新的且非常方便的颜色图 选项卡颜色图 https matplotlib org examples color colormaps reference html 我错过的是生成像 tab20b 或 tab20c 这
  • 如何将reportlab与Google应用程序引擎一起使用

    我无法在谷歌应用程序引擎下正确导入reportlab 根据以下guide http blog notdot net 2010 04 Generating PDFs on App Engine Python and introducing M
  • 从 Apache 运行 python 脚本的最简单方法

    我花了很长时间试图弄清楚这一点 我基本上正在尝试开发一个网站 当用户单击特定按钮时 我必须在其中执行 python 脚本 在研究了 Stack Overflow 和 Google 之后 我需要配置 Apache 以便能够运行 CGI 脚本
  • Scikit Learn - K-Means - 肘部 - 标准

    今天我想学习一些关于 K means 的知识 我已经了解该算法并且知道它是如何工作的 现在我正在寻找正确的 k 我发现肘部准则作为检测正确的 k 的方法 但我不明白如何将它与 scikit learn 一起使用 在 scikit learn
  • 如何表示类的实例与将其作为输入的类之间的关系?

    我有一堂课叫House 这个类的实例是house class House def init self height length self height height self length length def housePlan hou
  • 本地设置的 Cython 编译器指令是否影响一个或所有函数?

    我正在努力使用 Cython 加速一些 Python Numpy 代码 并且对 本地 设置 如定义的here http docs cython org en latest src reference compilation html在文档中
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • Django - 缺少 1 个必需的位置参数:'request'

    我收到错误 get indiceComercioVarejista 缺少 1 个必需的位置参数 要求 当尝试访问 get indiceComercioVarejista 方法时 我不知道这是怎么回事 views from django ht
  • 如何将 Pandas Dataframe 中的字符串转换为字符列表或数组?

    我有一个名为的数据框data 其中一列包含字符串 我想从字符串中提取字符 因为我的目标是对它们进行一次性编码并使之可用于分类 包含字符串的列存储在预测因子如下 predictors pd DataFrame data columns Seq

随机推荐

  • 包含按位与 (&) 或按位异或 (^) 的运算是否有等价的十进制?

    考虑以下表达式 其中两个操作数都是十进制 a b or a b 我知道运算符对操作数的二进制数字执行什么操作 因此我知道答案如何 的a b or a b被计算 我不知道这些运算是否可以转换为十进制形式 例如 我们可以说a lt
  • 将 std::unique_ptr 保存为不完整类型的类的构造函数定义之间的差异

    下面的代码编译正常 参见下面的 Golbolt 链接 include
  • Ruby:递归方法

    def reverse append arr n return arr if n lt 0 reverse append arr n 1 arr lt lt n arr end reverse append 4 gt 0 1 2 3 4 我
  • 我怎样才能在edittext中的每个字符下划线?

    我正在尝试在android中编写一个像刽子手这样的猜词游戏 假设这个词是 苹果 我想显示 5 个下划线来告诉玩家该单词有 5 个字符长 并且它们应该如下显示 填充 我想不出有什么办法可以轻松做到这一点 我发现this https stack
  • MaterialComponents 中 android:background 的替代品是什么?

    问题 android background 在 MaterialComponents 中没有生效 在我的项目中 我使用的是 AppCompat
  • 根据项目更改列表视图行的颜色

    我想根据列表视图的状态更改其颜色 我有两个状态 我想将 待处理 更改为红色 将 完成 更改为蓝色 这怎么可能 我不知道 因为这是我第一次在列表视图中执行此操作 也许是这样的 Dim ListView1 As ListView New Lis
  • 如何在 iOS 上从相机胶卷中检索最新的照片?

    我很难弄清楚如何在没有用户干预的情况下以编程方式检索相机胶卷中的最新照片 需要明确的是 我不想使用图像选择器 我希望应用程序在打开时自动抓取最新的照片 我知道这是可能的 因为我见过类似的应用程序可以做到这一点 但我似乎找不到任何相关信息 一
  • 捕获父容器上的单击事件,但不捕获子容器上的单击事件

    用下面的例子 HTML div class parent div class child div div CSS parent align items center background blue display flex justify
  • 如何在 Flutter 中使用另一个提供程序内部的提供程序

    我想创建一个具有以下功能的应用程序authentication service根据用户角色具有不同的权限和功能 例如消息 所以我创建了一个Provider用于用户和登录管理 另一个用于用户可以看到的消息 现在 我想在用户登录时获取消息 一次
  • 实体框架 - 对唯一索引进行 UPSERT

    我对我的问题进行了一些搜索 但找不到任何真正有帮助的东西 所以我的问题 困境仍然是这样的 我知道 mysql 数据库有一个独特的索引系统 可用于使用以下格式在同一查询中插入 更新 insert into t a b c values 1 1
  • 在 AWS Cognito Oauth2 令牌中包含用户详细信息

    我正在将 AWS cognito 与 NodeJS 后端 API 结合使用 并希望在访问令牌返回中包含用户详细信息 oauth2 令牌用户池客户端应用程序中定义范围的端点 另外如果我使用管理员启动验证API 无法将范围包含在返回访问令牌中
  • Pandas date_range - 减去 numpy timedelta 给出奇怪的结果,时间变得不是 0:00:00

    我正在尝试使用 pandas date range 功能生成一组日期 然后我想迭代这个范围并从每个日期中减去几个月 确切的月份数在循环中确定 以获得新的日期 当我这样做时 我得到了一些非常奇怪的结果 MVP get date range d
  • 如何从 int 转换为泛型 Integer?

    我对 Java 比较陌生 并且习惯了 C 中的泛型 因此在处理这段代码时遇到了一些困难 基本上 我想要一个通用方法来通过按键获取存储的 Android 首选项 并且此代码虽然丑陋 但适用于布尔值 但不适用于整数 当它因 ClassCastE
  • 如何使用 Postman 查询 Exchange EWS?

    使用Postman 如何查询本地 Exchange 2016 EWS 我有 EWS 的组织 URLhttps my organization net EWS Exchange asmx 我们使用的是 Exchange 2016 没有 Off
  • 在项目之间共享自定义 PHP 代码的最佳方式

    我正在开发一个分布式环境 主要是使用 PHP 我的很多项目共享一些相同的代码 例如我的日志代码 基于 log4php 但添加了一些自定义内容 我可以在每个项目中复制粘贴此代码 但自然地 如果我更改其中的任何内容 我需要将其重新粘贴到各处并
  • 尝试创造。初始化并格式化VHD磁盘

    一些背景 我在实验室环境中工作 遇到了许多问题 需要创建 VHD 并将其附加到虚拟机以进行压力测试 我想出了一个脚本 允许用户使过程尽可能简单 如下 vms Get VM val 0 Write Host This script is se
  • 计算月份统计数据

    我有一个捐款表 我试图计算每个月的总金额 几个月没有任何捐款 我希望结果返回 0 这是我当前的查询 Donation calculate sum amount conditions gt created at gt Time now pre
  • 从服务器端应用程序向客户端推送消息?

    我有一个基于 javascript 的客户端 当前正在轮询 NET Web 服务以获取新内容 虽然轮询有效 我对这种方法不满意 因为我正在使用系统资源并在没有接收任何更改时产生开销 我的问题是如何通知我的客户有新内容可供显示 我对实施此解决
  • 使用处理的二次曲线上的点 (p5.js)

    我使用这个公式来计算二次曲线上的点 cPx2 1 t 1 t x1 2 1 t t qcX t t x2 cPy2 1 t 1 t y1 2 1 t t qcY t t y2 当我设置 t 10 并迭代曲线时 我得到 看起来它不仅获得了曲线
  • Windows 上尝试 python 多处理时出现运行时错误

    我正在 Windows 机器上使用线程和多处理来尝试我的第一个正式的 python 程序 但我无法启动进程 Python 给出以下消息 问题是 我没有在main模块 线程在类内的单独模块中处理 EDIT 顺便说一句 这段代码在 ubuntu