无法通过多处理同时调用多个函数

2023-12-01

我试图弄清楚如何在同一时间多次运行相同的函数。我可以使用基于其他问题的多处理来实现一些东西,但不幸的是它不能按我想要的方式工作。实际上,当我运行它时,我得到类似这样的东西(函数在每个其他函数之后运行):

Worker1
0 1
1 1
2 1
Worker2
0 2
1 2
2 2
Worker3
0 3
1 3
2 3  

我想实现这个(或类似的事情):

Worker1
Worker2
Worker3
0 1
0 2
0 3
1 1
1 2
1 3
2 1
2 2
2 3

我对Python真的很陌生,所以可能犯了一些小错误,但不幸的是我无法弄清楚问题出在哪里,所以如果有人能向我展示正确的解决方案,我将非常感激。

import multiprocessing

def worker():
    print ("Worker1")
    doSomething(1)
    return

def worker2():
    print ("Worker2")
    doSomething(2)
    return              


def worker3():
    print ("Worker3")
    doSomething(3)
    return    


def doSomething (x):
    for num in range(3): 
        print (num, x)


def runInParallel(*fns):
  proc = []
  for fn in fns:
    p = multiprocessing.Process(target=fn)
    p.start()
    proc.append(p)
  for p in proc:
    p.join()


if __name__ == '__main__':
    runInParallel(worker, worker2, worker3)

 # 2. ATTEMPT - it does the same
if __name__ == '__main__':
    p = multiprocessing.Process(target=worker)
    jobs.append(p)
    p.start()
    p2 = multiprocessing.Process(target=worker2)
    jobs.append(p2)
    p2.start()
    p3 = multiprocessing.Process(target=worker3)
    jobs.append(p3)
    p3.start()

发生的情况是,后台线程甚至在程序可以创建并启动下一个线程之前就已完成,因此这就是您将每个工作人员分开的原因。以获得您想要的输出。您可以添加睡眠,就像 Evert 提到的那样:

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

无法通过多处理同时调用多个函数 的相关文章

随机推荐

  • Apps 脚本 - 模态显示和 google.script.run 从有界到库

    我有一个电子表格文件 其中包含集成了库的有界脚本 该库提供了2个函数 显示带有按钮的 html 模式 提供点击 html 上的按钮时的回调函数 图书馆内容 test html
  • PHPWord 中的 HTML 阅读器无法处理表格?

    当我使用 Html 阅读器将 html 转换为 docx 时 阅读器被切断了我的表格 PHP 示例 reader IOFactory createReader HTML phpWord reader gt load this gt getR
  • 加密 URL 中的路由数据

    在我的 ASP NET MVC 应用程序中 我想加密路由数据而不是 QueryString 换句话说 我正在使用 ASP NET MVC 默认路由模式 routes MapRoute name Default url controller
  • 如何使用第一个表中的逗号分隔值从其他表中选择行? [复制]

    这个问题在这里已经有答案了 有没有办法使用第一个表中的逗号分隔值从其他表中选择行 表格1 faculty subject 101 102 104 103 105 表 2 subject code subject 101 subject 1
  • new Date() 依赖于操作系统吗?

    好吧 我正在使用 javascript 通过简单的正则表达式返回用户系统时间的简写时区 如下所示 new RegExp exec new Date toString 0 这在 Mac 下使用 chrome 效果很好 例如我按预期得到 UTC
  • 变量以及它们在 prolog 中的设置和使用方式

    http www csupomona edu jrfisher www prolog tutorial 2 1 html 所以在那个教程中它有 conflict Coloring adjacent X Y color X Color Col
  • 在页面之间发送参数的最佳方式是什么?

    我们在项目中使用 JSF 我对它还很陌生 每个页面都有一个 back bean Java 文件 为了从一个页面移动 重定向 到另一个页面 我需要在重定向之前将所有参数 搜索条件 放入请求范围中 然后在下一页构造函数中检索它 当你的页面深度很
  • 如何在邮件合并中保留谷歌电子表格的格式?

    我想发送一封电子邮件 其中包含谷歌电子表格内容作为带有格式的正文 我参考了here但它仅适用于单元格 A1 我希望它适用于完整的数据范围 如何在发送电子邮件时保留所有格式 你需要使用getRichTextValues获取给定范围内每个单元格
  • 嵌入文档属性的多次更新

    我有以下收藏 Milestones ActualDate null Index 0 Name milestone1 TargetDate ISODate 2011 12 13T22 00 00Z id ObjectId 4ee89ae7e6
  • config.exceptions_app 无法在 Rails 中工作

    我正在尝试为所有 404 和 500 错误呈现自定义错误页面 所以我在ErrorController类中定义了两个方法not found和internal server error class ErrorController lt Appl
  • 在代理处理程序中,如何区分获取属性(var)与调用方法?

    我有以下代码 其中我使用代理对象 代理 来尝试捕获方法调用和属性访问 例子 https jsfiddle net r8j4fzxL 2 function use strict console clear some empty class w
  • Lisp 中的 setq 和 defvar

    我看到实用 Common Lisp uses defvar db nil 用于设置一个全局变量 使用不是可以吗setq为了同样的目的 使用的优点 缺点是什么defvar vs setq 引入变量的方法有多种 DEFVAR and 定义参数介
  • 为什么两个表之间的完全外连接结果中有NULL?

    我试图从两个表中获取唯一值 这两个表都只有一列称为域 DDL create table domains 1 domain varchar create table domains 2 domain varchar DML insert in
  • 使用htaccess将目录传递给GET参数而不重写url

    我想传递 而不是重定向 这样的东西 http www example com 有 可选 传递给脚本http www example com index php http www example com foo 有 可选 传递给脚本http
  • Python 等语言如何克服 C 的整数数据限制?

    使用 C Python 和 Scheme 中的阶乘程序进行一些随机实验 我发现了这个事实 在 C 中 使用 unsigned long long 数据类型 我可以打印的最大阶乘为 65 即 9223372036854775808 即指定的
  • 实施重试例程

    我有以下想法 是否可以在 python 中实现重试例程 这是我所做的一个简单示例 我想要一个更灵活的解决方案 独立于功能 因此 将removeFile 与任何其他函数切换 并摆脱main 中的while 循环 import os impor
  • 显示git中每个分支的最新提交

    有没有办法显示git中每个分支的最新提交 我在 git 中有一个代码库 我已经设置了一段时间了 其中有几个分支用于不同的功能 我需要进去更新 排除一些代码的问题 但是我选择将它们命名得太笼统 现在我不知道我最后在处理哪一个 甚至不知道哪一个
  • 不能直接使用Function.prototype.call

    function f a return a f 1 gt 1 f call null 1 gt 1 Function prototype call f null 1 gt undefined 为什么最后一行返回undefined 我以为它们
  • 批处理脚本列出本地硬盘驱动器,然后在每个驱动器上执行 dir 命令

    我尝试根据这个主题制作一个脚本 用于查找已安装设备的驱动器号的批处理脚本 但并没有真正的成功 这是脚本 SETLOCAL EnableDelayedExpansion for f usebackq tokens 1 i in fsutil
  • 无法通过多处理同时调用多个函数

    我试图弄清楚如何在同一时间多次运行相同的函数 我可以使用基于其他问题的多处理来实现一些东西 但不幸的是它不能按我想要的方式工作 实际上 当我运行它时 我得到类似这样的东西 函数在每个其他函数之后运行 Worker1 0 1 1 1 2 1