如何在Python中并行处理列表?

时间:2018-08-13 03:37:57

标签: python multiprocessing python-multithreading

我写了这样的代码:

def process(data):
   #create file using data

all = ["data1", "data2", "data3"]

我想在所有列表上并行执行处理功能,因为它们正在创建较小的文件,所以我不必担心磁盘写入,但是处理时间很长,所以我想使用所有内核。

如何使用python 2.7中的默认模块来做到这一点?

3 个答案:

答案 0 :(得分:3)

您可以尝试以下基本示例:

from threading import Thread

def process(data):
    print "processing %s" % data

all = ["data1", "data2", "data3"]

for task in all:
    t = Thread(target=process, args=(task,))
    t.start()

这里是replbrief tutorial,显示了如何根据需要让调用者暂停线程的加入。

关于使用您的所有内核,我没有任何信息,但是这里有一些资源可能会有所帮助:[1,[2],[{{ 3}}]

答案 1 :(得分:3)

或者:

GameObjectParent

或(仅python版本> 3.6.0):

from threading import Thread

def process(data):
    print("processing {}".format(data))

l= ["data1", "data2", "data3"]

for task in l:
    t = Thread(target=process, args=(task,))
    t.start()

答案 2 :(得分:1)

有一个使用multiprocessing的模板,希望对您有所帮助。

from multiprocessing.dummy import Pool as ThreadPool

def process(data):
    print("processing {}".format(data))
alldata = ["data1", "data2", "data3"]

pool = ThreadPool()

results = pool.map(process, alldata)

pool.close()
pool.join()