Python连续并行执行
Python continuous parallel execution
希望构建一个 python 脚本,该脚本从 stdin 运行无限读取循环,如 for line in sys.stdin:
。对于每次迭代,我想从使用 line
作为输入在后台执行的池中获取一个工作人员。完成执行或超时的过程打印到标准输出。
我很难找到能够连续工作的工作池模块。例如,multiprocess pool module 只支持像 join
这样等待所有工作人员完成所有任务的功能。对于上面的规范,我无法提前知道所有的任务,需要在后台分配工作。
这将 运行 永远。
import sys
from multiprocessing import Pool
pool = Pool()
for line in sys.stdin.readline():
pool.apply_async(function, args=[line])
def function(line):
"""Process the line in a separate process."""
print(line)
使用 Pool
和 imap
可能会更容易,但您必须假设最大工作人员容量 (processes=5
):
import multiprocessing
import sys
def worker(line):
return "Worker got %r" % (line)
pool = multiprocessing.Pool(processes=5)
for result in pool.imap(worker, sys.stdin):
print "Result: %r" % (result)
希望构建一个 python 脚本,该脚本从 stdin 运行无限读取循环,如 for line in sys.stdin:
。对于每次迭代,我想从使用 line
作为输入在后台执行的池中获取一个工作人员。完成执行或超时的过程打印到标准输出。
我很难找到能够连续工作的工作池模块。例如,multiprocess pool module 只支持像 join
这样等待所有工作人员完成所有任务的功能。对于上面的规范,我无法提前知道所有的任务,需要在后台分配工作。
这将 运行 永远。
import sys
from multiprocessing import Pool
pool = Pool()
for line in sys.stdin.readline():
pool.apply_async(function, args=[line])
def function(line):
"""Process the line in a separate process."""
print(line)
使用 Pool
和 imap
可能会更容易,但您必须假设最大工作人员容量 (processes=5
):
import multiprocessing
import sys
def worker(line):
return "Worker got %r" % (line)
pool = multiprocessing.Pool(processes=5)
for result in pool.imap(worker, sys.stdin):
print "Result: %r" % (result)