我先进行了研究,但找不到我的问题的答案。我正在尝试在 Python 中并行运行多个函数。
我有这样的事情:
files.py
import common #common is a util class that handles all the IO stuff
dir1 = 'C:\folder1'
dir2 = 'C:\folder2'
filename = 'test.txt'
addFiles = [25, 5, 15, 35, 45, 25, 5, 15, 35, 45]
def func1():
c = common.Common()
for i in range(len(addFiles)):
c.createFiles(addFiles[i], filename, dir1)
c.getFiles(dir1)
time.sleep(10)
c.removeFiles(addFiles[i], dir1)
c.getFiles(dir1)
def func2():
c = common.Common()
for i in range(len(addFiles)):
c.createFiles(addFiles[i], filename, dir2)
c.getFiles(dir2)
time.sleep(10)
c.removeFiles(addFiles[i], dir2)
c.getFiles(dir2)
我想调用 func1 和 func2 并让它们同时运行。这些函数不会相互交互,也不会在同一对象上交互。现在我必须等待 func1 在 func2 开始之前完成。我该怎么做如下所示:
process.py
from files import func1, func2
runBothFunc(func1(), func2())
我希望能够几乎同时创建两个目录,因为我每分钟都在计算正在创建的文件数量。如果该目录不存在,它会打乱我的时间安排。
原文由 lmcadory 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
threading
或multiprocessing
。由于 CPython 的特性,
threading
不太可能实现真正的并行性。因此,multiprocessing
通常是更好的选择。这是一个完整的例子:
启动/加入子进程的机制可以很容易地按照您的
runBothFunc
封装到一个函数中: