如何在 Python 中对多个嵌套 for 循环使用多处理?
How to use multiprocessing for multiple nested for loop in Python?
我有一个 class 有一堆函数来检查数据对一个巨大的数据帧 ~33gb。变量中的每个值都是 运行 针对数据帧中的一列(比如 D 列),然后将其附加到数据帧本身以供其他迭代计算值。
无论如何,i 是 运行 对 df.D,j 是 运行 对 df.D 以及 i 的结果等等。我正在尝试查看哪组数字将提供最佳输出。下面是代码的片段。
program.py
class Test:
def runTest():
pass
def run():
runTest()
bunch of if/else statements to check the data
pd.to_csv to export the result
def aa(int):
calculation..
def bb(int):
do something
...
runTest.py
for i in range(10,25):
for j in range(45,85):
for k in range(6,16):
for l in range(7,21):
for m in range(65,75):
class hello(Test):
def runTest():
a = aa(i)
b = bb(j)
...
hello().run()
我已经尝试 itertools.product 列出该范围内的所有数字。但我不知道如何在我的程序中提取这些值。我希望它具有可扩展性,因为范围会更大,并且会添加更多参数来测试程序。
我如何 运行 这些嵌套的 for 循环与 dask 或 multiprocessing 来最小化 运行 这个任务的时间?或任何其他建议,我们将不胜感激。另外,如果有更好的方法导出结果。请告诉我。
您似乎在进行某种网格 search/parameter 探索。在这种情况下,我会避免 类 和嵌套循环。
要设置所有参数的一个列表,您可以使用itertools.product
,例如:
from itertools import product
for i, j in product(range(10), range(20)):
# run calculations
要并行迭代参数的多个值,我会使用 delayed
:
import dask
from itertools import product
@dask.delayed
def try_calc(i,j,k):
df = pd.read_csv(my_csv_file)
# run calculations
df.to_csv(results_file)
results = dask.compute([
try_calc(i,j,k) for i,j,k in product(range(10), range(20), range(30))
])
我有一个 class 有一堆函数来检查数据对一个巨大的数据帧 ~33gb。变量中的每个值都是 运行 针对数据帧中的一列(比如 D 列),然后将其附加到数据帧本身以供其他迭代计算值。
无论如何,i 是 运行 对 df.D,j 是 运行 对 df.D 以及 i 的结果等等。我正在尝试查看哪组数字将提供最佳输出。下面是代码的片段。
program.py
class Test:
def runTest():
pass
def run():
runTest()
bunch of if/else statements to check the data
pd.to_csv to export the result
def aa(int):
calculation..
def bb(int):
do something
...
runTest.py
for i in range(10,25):
for j in range(45,85):
for k in range(6,16):
for l in range(7,21):
for m in range(65,75):
class hello(Test):
def runTest():
a = aa(i)
b = bb(j)
...
hello().run()
我已经尝试 itertools.product 列出该范围内的所有数字。但我不知道如何在我的程序中提取这些值。我希望它具有可扩展性,因为范围会更大,并且会添加更多参数来测试程序。
我如何 运行 这些嵌套的 for 循环与 dask 或 multiprocessing 来最小化 运行 这个任务的时间?或任何其他建议,我们将不胜感激。另外,如果有更好的方法导出结果。请告诉我。
您似乎在进行某种网格 search/parameter 探索。在这种情况下,我会避免 类 和嵌套循环。
要设置所有参数的一个列表,您可以使用itertools.product
,例如:
from itertools import product
for i, j in product(range(10), range(20)):
# run calculations
要并行迭代参数的多个值,我会使用 delayed
:
import dask
from itertools import product
@dask.delayed
def try_calc(i,j,k):
df = pd.read_csv(my_csv_file)
# run calculations
df.to_csv(results_file)
results = dask.compute([
try_calc(i,j,k) for i,j,k in product(range(10), range(20), range(30))
])