全局变量和Python多重处理[重复]

2023-12-13

可能的重复:
Python 多处理全局变量更新未返回到父级

我使用的是一台具有多个内核的计算机,为了提高性能,我真的应该使用多个内核。但是,我很困惑为什么这些代码没有达到我的预期:

from multiprocessing import Process

var = range(5)
def test_func(i):
    global var
    var[i] += 1

if __name__ == '__main__':
    jobs = []
    for i in xrange(5):
        p = Process(target=test_func,args=(i,))
        jobs.append(p)
        p.start()

print var

from multiprocessing import Pool

var = range(5)
def test_func(i):
    global var
    var[i] += 1

if __name__ == '__main__':
    p = Pool()
    for i in xrange(5):
        p.apply_async(test_func,[i])

print var

我期望结果是[1, 2, 3, 4, 5]但结果是[0, 1, 2, 3, 4].

在进程中使用全局变量时肯定缺少一些微妙之处。这是否是正确的方法,或者我应该避免尝试以这种方式更改变量?


如果您正在运行两个单独的进程,那么它们将不会共享相同的全局变量。如果您想在进程之间传递数据,请查看使用 send 和 receive。看一眼http://docs.python.org/library/multiprocessing.html#sharing-state- Between-processes举一个类似于你正在做的事情的例子。

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

全局变量和Python多重处理[重复] 的相关文章

随机推荐

  • 根据键值将数组拆分为更小的数组?

    我有在我的网站上执行关键字搜索的 mysql 搜索结果 它们按会员级别 0 3 排序 然而 我需要以不同的方式显示排名 比如排名 3 的格式比其他排名更突出 我正在考虑将行分成单独的数组 因此 像 array0 将包含排名为 0 的所有行等
  • 如何使用另一个字段登录 Django Allauth?

    我已经设置成功了django allauth以及自定义用户模型 让用户直接使用电子邮件和密码或通过 Facebook 登录 在这种情况下 电子邮件从 Facebook 获取并保存在自定义用户模型的电子邮件字段中 我还创建了一个移动字段 目前
  • 为什么 setTimeout(fn, 0) 有时很有用?

    我最近遇到了一个相当讨厌的错误 其中代码正在加载一个
  • 为了防止内存泄漏,已强制取消注册 JDBC 驱动程序

    当我运行网络应用程序时 我收到此消息 它运行良好 但我在关机期间收到此消息 严重 Web 应用程序注册了 JBDC 驱动程序 oracle jdbc driver OracleDriver 但在 Web 应用程序停止时无法取消注册 为了防止
  • C# ASP.NET MVC 手动访问 Request.Form 和潜在危险值

    我正在针对每个用户请求将表单和查询字符串数据序列化并保存到数据库中 这个特定的提交模型已经具有 AllowHtml 属性 并且可以很好地提交给控制器 问题出在我记录请求的 Global asax 文件内 当我访问此表单值时 出现异常 从以下
  • .BAT 文件中未读取 SET 变量

    我有这个 Windows 批处理文件 但无法正常运行 基本上 我在一个位置有一个文件夹 我需要将其复制到另一个文件夹 但还要重命名新文件夹名称 Echo off set 836147398 Taunus A3 Echo Copying 83
  • 如何以正确的顺序导入Scrapy项目密钥?

    我正在导入 Scrapy 项目密钥items py into pipelines py 问题是order导入的项目与它们在中的定义方式不同items py file My items py file class NewAdsItem Ite
  • 如何使用 python 创建字典列表

    我有一个函数返回一个列表 我在其中序列化为 json 对象并将其写入 JSON 文件 结果是正确的 但问题是它返回分隔列表中的每条记录 我想要的是返回一个包含多个字典项的列表 example 返回结果 file Name test1 txt
  • iPhone ivar命名约定[重复]

    这个问题在这里已经有答案了 可能的重复 可可 Objective C 类中变量前面的下划线如何工作 我注意到 在很多参考资料中 我发现很多时候 变量在 h 文件中被命名为 variable 然后在 m 文件中被 synthesize d 为
  • 时钟和steady_clock测量的时间差

    我试图测量在代码中执行特定函数所需的时间 最初我使用的是clock 功能如下 clock t start clock do something clock t end clock printf Time taken f ms n doubl
  • 如何使用 Python/Django 在电子邮件中发送内联图像?

    我正在尝试使用 Python Django 发送带有内联图像的电子邮件 Here是显示我是如何做的代码 它仍在开发中 因此 现在要做的就是发送一封虚拟电子邮件 其中嵌入了大黄蜂的图片 然而 当我在 Gmail 收件箱中收到电子邮件时 我只看
  • 头文件中的变量声明 - 静态与否?

    当重构一些 defines我在 C 头文件中遇到类似于以下内容的声明 static const unsigned int VAL 42 const unsigned int ANOTHER VAL 37 问题是 静电会产生什么差异 如果有的
  • 检查 Glassfish DAS 是否正在以编程方式运行

    即使 Glassfish DAS 部署在本地计算机或远程计算机上 如何检查它是否正在以编程方式运行 使用Java6 我找到了一种除了 Linux 脚本之外检查 DAS 是否启动的方法 通过这种方式 我的应用程序和 DAS 是否位于同一台计算
  • PyQt5 GUI - 使用 PyInstaller 制作的 exe 无法打开

    我有一个 GUI 当我从 Anaconda Prompt 执行它时 它运行得非常好 我得到以下窗口作为输出 我已经使用 pip 安装了 pyinstaller 然后运行了该行 pyinstaller exe onefile my file
  • 如何将正在迭代的迭代器传递给函数?

    我正在迭代一个数组 根据当前值 我想将迭代器传递给子函数并让它处理多个值 然后在退出子函数时 继续迭代数组 下面是我迄今为止所能达到的最接近的结果 但我不断得到error use of moved value iter 我尝试过研究生命周期
  • 将 shell 输出重定向到文件 [重复]

    这个问题在这里已经有答案了 我正在 AIX 6 上工作 在 Korn Shell 上运行 java 命令 并尝试调试类加载问题 我把 verbose class 打印加载的类 然后 gt gt h ome user log log 将控制台
  • 如何配置 Unity 为 IEnumerable 注入数组

    我有一个课程需要IEnumerable我想用 Unity 解析它的构造函数参数并注入一个对象数组 这些简单的类说明了问题 public interface IThing int Value get public class SimpleTh
  • 如何构建支持超过 223 列鼠标输入的 Curses 程序

    我正在尝试让一个curses程序与我的终端跨显示器一起工作 但是 x 坐标无法移过第 223 列 而是循环移动 在源代码中 这似乎是因为它们被定义为 8 位 并且位置值仅在前 32 个值之后开始 即 x raw x 这是一个示例程序http
  • C++ 数组初始化

    float minTime 7 FLT MAX for int i 0 i lt 7 i cout lt lt Min lt lt minTime i lt lt endl 为什么我会得到以下输出 Min 3 40282e 038 Min
  • 全局变量和Python多重处理[重复]

    这个问题在这里已经有答案了 可能的重复 Python 多处理全局变量更新未返回到父级 我使用的是一台具有多个内核的计算机 为了提高性能 我真的应该使用多个内核 但是 我很困惑为什么这些代码没有达到我的预期 from multiprocess