使用Python多进程并行执行for循环

0 投票
1 回答
46 浏览
提问于 2025-04-14 16:22

我有一个特别的需求,我在使用BigQuery进行一些数据处理(ETL)。这个循环要执行35000次,但每次执行都要花将近1分钟才能完成。

我想用Python的多进程功能来实现,在Python的循环中调用我的BigQuery存储过程,让它们并行运行,这样可以加快速度。

我该怎么做呢?这样真的可行吗?或者有没有其他方法可以让我并行运行这个循环?我无法避免使用这个循环。

1 个回答

0

在编程中,我们常常会遇到一些问题,特别是在使用某些工具或库的时候。比如,有时候我们想要实现一个功能,但不知道该怎么做。这时候,很多人会选择去StackOverflow这个网站寻求帮助。在那里,有很多经验丰富的程序员会分享他们的知识和解决方案。

当你在StackOverflow上提问时,记得要描述清楚你的问题,包括你遇到的错误信息、你使用的代码和你希望实现的目标。这样,其他人才能更好地理解你的问题,并给出有效的建议。

另外,查看别人提问和回答的问题也是一个很好的学习方式。你可以从中学到很多实用的技巧和解决方案,这对提升你的编程能力非常有帮助。

总之,StackOverflow是一个很好的资源,可以帮助你解决编程中的各种问题,只要你善于利用它。

import multiprocessing
from google.cloud import bigquery

# Define your BigQuery stored procedure call function
def call_stored_procedure(iterations):
    client = bigquery.Client()
    # Your code

def main():
    num_processes = multiprocessing.cpu_count()  # Number of CPU cores
    iterations_per_process = 1000  # Adjust this based on your workload

    # Create a pool of processes
    pool = multiprocessing.Pool(processes=num_processes)

    # Submit tasks to the pool
    for _ in range(0, 35000, iterations_per_process):
        pool.apply_async(call_stored_procedure, (iterations_per_process,))

    # Close the pool and wait for all processes to complete
    pool.close()
    pool.join()

if __name__ == "__main__":
    main()

撰写回答