【发布时间】:2020-08-29 02:29:07
【问题描述】:
我正在深入研究 python 中的多处理世界。
看了一些视频后,由于我的职能性质,我想出了一个问题。
这个函数有 4 个参数:
- 第一个参数是要读取的文件,因此,这是要读取的文件列表。
- 以下 2 个参数是两个不同的字典。
- 最后一个参数是可选参数“debug_mode”,需要设置为“True”
# process_data(file, signals_dict, parameter_dict, debug_mode=False)
file_list = [...]
t1 = time.time()
with concurrent.futures.ProcessPoolExecutor() as executor:
executor.map(process_data, file_list)
t2 = time.time()
问题是: 如何为函数指定剩余的参数?
提前致谢
【问题讨论】:
-
有了这样简单的例子,为什么不发布一些我们可以复制和运行的东西呢?
-
我拥有的功能很长。原则上,我感兴趣的是如何使用参数设置函数以使用 executor.map。
-
对。所以你编写了一个非常小的测试程序。你的工人可能是
def worker(a,b,c,d): print(os.getpid(), a, b, c, d)。您感兴趣的问题 - 如何映射具有多个参数的函数 - 是十几行。 -
除了 ProcessPoolExecutor.map 之外还有其他方法可以实现目标吗?
-
map对我来说似乎是完成这项工作的工具。如果字典很大,则将其传递给孩子可能会出现性能问题(在 Windows 上有一个副本,在 linux 上,您可以通过将 dict 放在全局变量中来利用父内存空间的写时复制视图)。
标签: python python-multiprocessing concurrent.futures process-pool