簡體   English   中英

Python連續並行執行

[英]Python continuous parallel execution

希望構建一個 python 腳本,該腳本從 stdin 運行無限讀取循環,例如for line in sys.stdin: 對於每次迭代,我想從使用line作為輸入在后台執行的池中獲取一個 worker。 完成其執行或超時的過程打印到標准輸出。

我很難找到能夠連續工作的工作池模塊。 例如, 多進程池模塊僅支持join等功能,等待所有 worker 完成所有任務。 對於上述規范,我無法提前知道所有任務,需要在后台分配工作。

這將永遠運行。

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)

使用Poolimap可能會更容易,但您必須假設工作人員的最大容量( 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM