Python 用于并行数值计算



我正在开发一个涉及大量数值数据的Python应用程序。 在第一步中将数据分成组,然后可以独立计算组。

我尝试使用线程。Thread((,但很快意识到由于 gil 而没有用。

class vThread(Thread):
    def __init__(self,item):
        Thread.__init__(self)
        self.item = item
    def run(self):
        do_stuff()
vThreads = [] 
for item in items:
    vThreads.append(vThread(item))    
    for x in vThreads:
        x.start()
    for x in vThreads:
        x.join()

我也尝试了多处理。Process(( 但它所做的只是创建我的父进程而不是子进程的新实例(类似于线程的嵌入只是逐个进程替换线程(

在我的情况下,还有其他方法可以实现并行处理吗?独立计算的数量以千为单位。

在 Python3 上,您可以使用 concurrent.futures.ProcessPoolExecutor 并行运行多个独立的任务。

from concurrent.futures import ProcessPoolExecutor
with concurrent.futures.ProcessPoolExecutor() as executor:
    for item in items:
        executor.submit(do_stuff, item)

在 Python2 上,您可以使用多处理。池类以达到相同的结果。

from multiprocessing import Pool
pool = Pool()
for item in items:
    pool.apply_async(do_stuff, (item, ))

最新更新