我在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())
代码。
有没有办法实现目标(必须使用多进程)?
答案 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