从两个不同的文件并行调用python函数

从两个不同的文件并行调用python函数,python,Python,假设我们有两个文件file1.py和file2.py file1.py: from sample import common_func common_func() file2.py: from sample import common_func common_func() sample.py: import time def common_func(): print("I am common_func") time.sleep(10

假设我们有两个文件file1.py和file2.py

file1.py:

  from sample import common_func
    common_func()
file2.py:

  from sample import common_func
    common_func()
sample.py:

import time
def common_func():
    print("I am common_func")
    time.sleep(10)
    print("After sleep")
这里我们从两个其他文件(file1、file2)并行/并发调用sample.py中的common_func。我们的目标是,如果file1.py首先调用common_func,那么file2.py必须等待file1使用common_func完成


请帮助我实现此行为。

如果file1.py和file2.py是长时间运行的进程,那么您可以使用下面这样的代码相互通信,并侦听file1.py功能是否已完成,如果已完成,则可以启动file2.py代码,否则将进入休眠状态

示例代码:

from subprocess import Popen, PIPE

p = Popen(['program', 'arg1'], stdin=PIPE, stdout=PIPE, stderr=PIPE)
output, err = p.communicate(b"input data that is passed to subprocess' stdin")
rc = p.returncode

多线程还是多进程?我强烈建议您研究多线程。线程将能够等待其中一个。如何运行
file1.py
file2.py
?如果这是一个多线程应用程序,
threading.Lock
很好。如果一个进程产生另一个进程,
multirpoccessing.Lock
是一个不错的选择。如果它们是完全独立的执行,您可能需要一个基于文件系统的名为lock的文件系统,这在每个平台上都是不同的。我们问这些问题是因为它们对答案很重要。@Jasmijn我正在使用spark submit file1.py运行它