我有两个不同的任务要在进程之间分配。我有一个任务,它包括从url检索响应,并将响应写入Queue
(多处理队列,而不是线程),我希望有几个进程并行处理。你知道吗
我还有另一个任务,它等待Queue
有响应数据,从中检索响应,并写入文件。我想有一个过程来处理这个。你知道吗
问题是,如果我启动一个进程池来处理这些url,那么在所有进程完成之前,编写进程不会启动。如何启动进程池以命中url并启动进程同时/逐个地写入文件?你知道吗
我的代码:
CSV = CHANNEL + ".csv"
response_queue = Queue()
urls = []
for row in read_channel_data(CSV):
url = "https://some_domain/%s" % row[1]
urls.append(url)
# This process will start and wait for response_queue to fill up inside func
write_process = Process(target=func, args=(response_queue,))
write_process.start()
write_process.join()
# This never starts
pool = Pool(processes=PROCESSES)
pool.map_async(get_data, urls)
pool.close()
pool.join()
只需将调用移到
write_process.join()
,直到调用pool.join()
之后。join
调用一直阻塞,直到func
退出,除非pool
东西运行,否则不会发生这种情况。所以只需调用start
,并推迟调用join
,直到能够运行pool
代码。你知道吗相关问题 更多 >
编程相关推荐