当前位置: 首页 > 面试题库 >

在python中并行执行任务

郭洋
2023-03-14
问题内容

我正在使用python 2.7,我有一些看起来像这样的代码:

task1()
task2()
task3()
dependent1()

task4()
task5()
task6()
dependent2()

dependent3()

此处唯一的依赖项如下:dependent1需要等待任务1-3,Dependent2需要等待任务4-6,而dependent3需要等待依赖项1-2
…以下是可以的:首先运行全部6个任务并行,然后是前两个从属。

我希望尽可能多的任务并行运行,我已经在Google上搜索了一些模块,但是我希望避免使用外部库,并且不确定队列线程技术如何解决我的问题(也许有人可以推荐一个好的资源?)


问题答案:

内置的threading.Thread类提供了您所需要的一切:开始启动一个新线程,并加入以等待线程结束。

import threading

def task1():
    pass
def task2():
    pass
def task3():
    pass
def task4():
    pass
def task5():
    pass
def task6():
    pass

def dep1():
    t1 = threading.Thread(target=task1)
    t2 = threading.Thread(target=task2)
    t3 = threading.Thread(target=task3)

    t1.start()
    t2.start()
    t3.start()

    t1.join()
    t2.join()
    t3.join()

def  dep2():
    t4 = threading.Thread(target=task4)
    t5 = threading.Thread(target=task5)

    t4.start()
    t5.start()

    t4.join()
    t5.join()

def dep3():
    d1 = threading.Thread(target=dep1)
    d2 = threading.Thread(target=dep2)

    d1.start()
    d2.start()

    d1.join()
    d2.join()

d3 = threading.Thread(target=dep3)
d3.start()
d3.join()

另外,您可以使用Queue.join等待线程结束。



 类似资料:
  • 我需要找到一种在java中并行执行任务(依赖和独立)的方法。 任务A和任务C可以独立运行 任务B取决于任务A的输出 我查了java。util。并发Future和Fork/Join,但看起来我们无法向任务添加依赖项。 有人能告诉我正确的Java API吗。

  • 本文向大家介绍Python中运行并行任务技巧,包括了Python中运行并行任务技巧的使用技巧和注意事项,需要的朋友参考一下 示例 标准线程多进程,生产者/消费者示例: Worker越多,问题越大 map Map能够处理集合按顺序遍历,最终将调用产生的结果保存在一个简单的集合当中。

  • 我找不到关于我们被要求进行的调查的具体答案 我看到并行流在使用少量线程时性能可能不是那么好,而且当DB在处理当前请求的同时阻止下一个请求时,它的表现显然也不是那么好 然而,我发现实现任务执行器与并行流的开销是巨大的,我们实现了一个POC,它只需要这一行代码就能满足并发需求: 而在Task Executor中,我们需要重写Runnable接口并编写一些繁琐的代码,以使Runnable不是空的,并返回

  • 我有一个任务列表 一个任务可以选择性地依赖于其他任务。 例如: A可以依赖于3个任务:B、C和D B可以依赖于2个任务:C和E 它基本上是一个有向无环图,任务的执行应该只有在依赖任务执行之后才能发生。 现在,在任何时间点,都可能有多个任务可供执行。在这种情况下,我们可以并行运行它们。 关于如何在尽可能多的并行性的同时实现这样的执行,您有什么想法吗?

  • 我不熟悉Reactor框架,并尝试在现有的实现中使用它。LocationProfileService和InventoryService都返回一个Mono,并并行执行,彼此之间没有依赖关系(来自MainService)。在LocationProfileService中-发出了4个查询,最后2个查询依赖于第一个查询。 有什么更好的方法来写这个?我看到调用按顺序执行,而其中一些应该并行执行。正确的做法是

  • 问题内容: node.js的事件驱动编程模型使协调程序流变得有些棘手。 简单的顺序执行变成嵌套的回调,这很容易(尽管有些麻烦以至于要写下来)。 但是并行执行如何?假设您有三个可以并行运行的任务A,B,C,当它们完成后,您要将其结果发送给任务D。 对于前叉/连接模型,这将是 fork A fork B fork C join A,B,C, run D 我该如何在node.js中编写它?是否有最佳做法