有一个名为/tmp/largefile
的大文件,我想逐行处理文件。我的想法如下:
|---- Process-001 (largefile-part1)
|
|---- Process-002 (largefile-part2)
(largeefile) --> multiprocessing ----> |
|---- Process-003 (largefile-part3)
|
|---- Process-004 (largefile-part4)
Process-00x
将使用demo
函数处理largefile的特殊部分。 demo
是流程任务功能。
|-- [gevent worker001]
|
demo (Process func) ----> a part of largefile ---->|-- [gevent worker002]
|
|-- [gevent ....]
如何按进程号将单个目标文件拆分为多个迭代器?
#!/usr/bin/env python
# -*- coding: utf8 -*-
import multiprocessing
def worker(data):
print(data.strip())
return data
def demo(itertor):
'''Parallel programming: Just demo here'''
for _ in itertor:
worker(_)
return itertor
processes = []
f = open("/tmp/largefile")
for i in range(5):
proc = multiprocessing.Process(target=demo, args=(f, ))
processes.append(proc)
for process in processes:
process.start()
for process in processes:
process.join()
答案 0 :(得分:0)
您可以使用itertools.tee
返回2个迭代器副本
f = open("/tmp/largefile")
for i in range(5):
f,f_copy = itertools.tee(f)
proc = multiprocessing.Process(target=demo, args=(f_copy, ))
processes.append(proc)
我猜......这可能不是你想要的......但它是你的问题所要求的