在Python中只有当前一个函数完成后才运行另一个函数

问题描述 投票:0回答:2

我有4个功能:

  1. firstfunc()
  2. 第二个函数()
  3. thirdfunc()
  4. forthfunc()

我想按顺序运行这些函数(顺序无关紧要)而不是一起运行,我需要这些函数等待其中一个函数完成任务,然后另一个函数开始执行。

每个函数返回一个不同的值,然后将其存储在变量中,稍后用于进一步的数据处理。这如何在Python中完成?我是 python 的新手。

python multithreading function locking
2个回答
1
投票

除非使用条件语句另有说明,否则编程语言从顶部执行。您想要在这里实现的目标就是您安排的方式。

执行第一个,然后执行第二个,依此类推。


0
投票

我猜你的代码来自leetcode,有一个关于3个函数的问题,这是我的解决方案:

from threading import Lock


class Foo:
    def __init__(self):
        self.lock_first = Lock()
        self.lock_first.acquire()
        self.lock_second = Lock()
        self.lock_second.acquire()

    def first(self, printFirst: 'Callable[[], None]') -> None:
        # self.lock_first.acquire()
        # printFirst() outputs "first". Do not change or remove this line.
        printFirst()
        self.lock_first.release()


    def second(self, printSecond: 'Callable[[], None]') -> None:
        # self.lock_second.acquire()
        while self.lock_first.locked():
            continue
            
        # printSecond() outputs "second". Do not change or remove this line.
        printSecond()
        self.lock_second.release()


    def third(self, printThird: 'Callable[[], None]') -> None:
        
        while self.lock_first.locked() or self.lock_second.locked():
            continue
        
        # printThird() outputs "third". Do not change or remove this line.
        printThird()

您还可以在此处查看非常相似的解决方案(如果您已注册): https://leetcode.com/problems/print-in-order/editorial/

© www.soinside.com 2019 - 2024. All rights reserved.