@allias173

Как перечитать все строчки в текстовом файле в режиме многопотока?

Есть текстовый файл, скрипт берет из него каждую строчку по очереди и меняет её.

def a():
base = open(str(sys.args[1])).read().splitlines()
for a in base:
	действие над строчкой


Нужно добавить несколько потоков, но не понимаю, как.

Если просто запустить a в несколько потоков, каждый поток будет проходить все строчки повторно.

Как разделить файл для всех потоков, что бы несколько потоков не проверяли одну и ту же строчку?
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 1
попробуйте этот шаблон себе приколхозить
from multiprocessing.pool import ThreadPool as Pool
# from multiprocessing import Pool
from random import randint
from time import sleep


def process_line(l):
    print l, "started"
    sleep(randint(0,3))
    print l, "done"


def get_next_line():
    with open("sample.csv",'r') as f:
        for line in f:
            yield line

f = get_next_line()

t = Pool(processes=8)

for i in f:
    t.map(process_line, (i,))

t.join()
t.close()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы