【发布时间】:2019-04-20 21:07:11
【问题描述】:
我有一个简单的问题。本质上,我想同时或并行地在列表列表上运行一个函数。
这基本上就是我正在使用的东西
def func(x):
print(x)
for objectList in space:
for subObject in objectList:
func(subObject)
理想情况下,我希望能够同时在每个 objectList 上运行 func()。我知道(实际上我不知道,这就是为什么我要问如何做到这一点)这是线程或并行,但这是我第一次尝试。
我的问题是,python 中是否有模块或内置函数或标准方式来完成此任务?
很抱歉,如果我以某种方式违反了本网站或其他内容的规则,或者您认为这个问题很愚蠢或重复或其他任何问题。
【问题讨论】:
-
即使线程或并行也不能立即工作 - 执行之间的延迟总是很小。在 Python 的线程中,有时它会比没有线程运行花费更多的时间。
-
@furas:有时对于线程/并行性,它确实同时发生(例如,如果线程在独立 CPU 或同一 CPU 的独立内核上运行)。但是由于 GIL,使用 CPython 可能很难实现。
-
@psmears 我也在考虑 GIL 的问题 :)
-
您是要在每个 objectList 上并行运行 func(),还是要在所有 objectList 中的每个 subObject 上并行运行 func()?
标签: python python-3.x multithreading parallel-processing