【发布时间】:2018-10-16 10:23:22
【问题描述】:
我正在处理 Python 多处理,我想了解是否可以节省时间。
我有三个应该由 Python 读取的 txt 文件。所以我定义了一个打开一个txt文件并逐行读取的函数。这个函数需要的输入就是txt文件的名字:
import multiprocessing as mp
output=mp.Queue()
def funct_imp(name):
[...]
output.put([var1,var2,var3])
return (var1,var2,var3)
然后我对比了第一个脚本:
res01=funct_imp(name01)
res02=funct_imp(name02)
res03=funct_imp(name03)
第二个我使用 Python 多处理:
for name in [name01,name02,name03]:
pool=mp.Process(target=func_imp,args=name)
pool.start()
res=output.get()
现在我有两个主要问题:
- 如何获得所有流程的结果?最后我在
res中找到与res03相同的结果 - 第一个脚本在 18 秒内运行,而第二个脚本在 25 秒内运行。我预计会适得其反(实际上我预计会更多地减少时间)。
【问题讨论】:
-
我认为您需要查看多处理文档:Python Multiprocessing。使用多处理池的示例应该很容易适应您的工作
-
如果任务本身不够耗时,那么使用多处理会使整个处理时间变得更糟,因为创建了进程,然后进程间通信的时间成本很高。因此,可以说每个进程需要 1 秒才能创建。如果您为执行需要 0.1 秒的任务创建流程,多处理的总执行时间将为 1.1 秒,而不是直接执行任务可能需要的 0.1 秒。 Ofc,只是一个例子。另外..您的代码可能会更好,我会正确回答:)
标签: python python-multiprocessing