Я ищу несколько советов относительно небольшого Python сканера craigslist. Поскольку существует так много веб-сайтов craigslist, и мне нужно запускать их один за другим, я разделил сканирование на несколько процессов, используя Pipe () (поскольку Pipe поддерживается AWS Lambda). Запуск приложения может занять от 2 до 8 минут при поиске вещей по всей территории США и Канады. Вместо того, чтобы ждать единовременного возврата всех результатов. Я хотел бы вернуть результаты каждого процесса, когда он будет запущен, чтобы я мог постоянно обновлять клиентскую часть новыми результатами.
for i in range(len(site_list)):
site_counter = site_counter + len(site_list[i])
processes.append(Process(target=f, args=(site_list[i], event['category'], event['search_query'], child_conn,)))
for process in processes:
process.start()
for process in processes:
yield parent_conn.recv() # My attempt to return the result of each process
for process in processes:
process.join()
Когда я включаю выход в функцию, которую он запускает, но сразу выводит код выхода 0.
В чем проблема, я думаю: я читал о yield и генераторах. Я чувствую, как будто процесс не закончен, выполняя свою работу до запуска урожая. Я также думаю, потому что процесс находится в другом потоке до .Join (), вы не можете уступить для функции из другого потока.