在 Python 中并行化此列表理解
Parallelize this list comprehension in Python
我正在尝试以并行方式(在 4 个线程上)运行 进行此声明。
[x for x in obj_list if x.attribute == given_attribute]
如有任何帮助,我们将不胜感激。
我发现 this 问题对其他类型的理解很有用,但对这种情况下的过滤没有用。
您可以按照您提供的示例中的说明使用 Pool
。这种方法有效,但之后您必须删除 None
结果:
import multiprocessing as mp
class Thing:
def __init__(self, y):
self.attribute = y
def square(thing, given_attribute):
if thing.attribute == given_attribute:
return thing
given_attribute = 4
x = [Thing(i) for i in range(10)] # List of objects to process
if __name__ == '__main__':
pool = mp.Pool(processes=4)
results = [pool.apply(square, args=(x[i], given_attribute, )) for i in range(10)]
r = [i for i in results if i is not None] # Remove the None results
print r
我正在尝试以并行方式(在 4 个线程上)运行 进行此声明。
[x for x in obj_list if x.attribute == given_attribute]
如有任何帮助,我们将不胜感激。
我发现 this 问题对其他类型的理解很有用,但对这种情况下的过滤没有用。
您可以按照您提供的示例中的说明使用 Pool
。这种方法有效,但之后您必须删除 None
结果:
import multiprocessing as mp
class Thing:
def __init__(self, y):
self.attribute = y
def square(thing, given_attribute):
if thing.attribute == given_attribute:
return thing
given_attribute = 4
x = [Thing(i) for i in range(10)] # List of objects to process
if __name__ == '__main__':
pool = mp.Pool(processes=4)
results = [pool.apply(square, args=(x[i], given_attribute, )) for i in range(10)]
r = [i for i in results if i is not None] # Remove the None results
print r