python多进程与两个列表比较

时间:2017-08-29 02:26:47

标签: python multiprocessing pool

我在multiprocess的{​​{1}}上有问题。

如果我有两个列表:

python3.5

我想做:

xlist = [1,2,3]
ylist = [4,5,6]

输出

for i in xlist:
    for j in ylist:
        print (i*j)

我尝试使用Multiprocess执行此操作:

4
5
6
8
10
12
12
15
18

但我无法得到上面的输出节目。我的输出将是

import multiprocessing

global xlist
xlist = [1,2,3]
ylist = [4,5,6]

def product(ylist): 
    for x in xlist:
        for y in ylist:
            print (x,y)
    return 'OK'

if __name__ == "__main__":
    pool = multiprocessing.Pool()
    results = []
    for i in range(0, len(ylist)):
        result = pool.apply_async(job, args=(ylist,))
        results.append(result)
        # print (result.get())
    pool.close()
    pool.join()

for result in results:
    print(result.get())

代码。

有没有办法实现目标(必须使用多进程)?

1 个答案:

答案 0 :(得分:1)

我认为你想在一组非常大的数字上使用它之前尝试一个简单的例子,并且功能更复杂。

这是一个打印您想要的程序,使用多处理程序,并且应该扩展更大的列表和更复杂的功能。

import multiprocessing

xlist=[1,2,3]
ylist=[4,5,6]

def enum_tasks():
  for x in xlist:
    for y in ylist:
      yield (x,y)

def product(xy):
  x,y = xy
  return x * y

if __name__ == '__main__':
  CHUNK_SIZE = multiprocessing.cpu_count()
  pool = multiprocessing.Pool()
  for result in pool.imap(product, enum_tasks(), CHUNK_SIZE):
    print result