如何退出Python多处理循环?

如何退出Python多处理循环?,python,multiprocessing,Python,Multiprocessing,我有一个多处理代码,用于搜索数据库记录中的特定条件,当它到达数据库的末尾时,循环必须停止,我如何才能做到这一点?代码如下: import psycopg2 from multiprocessing import Pool conn = psycopg2.connect(a database) query=conn.cursor() query.execute(some query) def scanfile(): try: row=query.fetchone() excep

我有一个多处理代码,用于搜索数据库记录中的特定条件,当它到达数据库的末尾时,循环必须停止,我如何才能做到这一点?代码如下:

import psycopg2
from multiprocessing import Pool

conn = psycopg2.connect(a database)
query=conn.cursor()
query.execute(some query)

def scanfile():
    try: row=query.fetchone()
    except: return False #here the loop must stop 
    #do something with row...

if __name__=='__main__':
    pool=Pool()
    while True:
        pool.apply_async(scanfile)
    pool.close()
    pool.join()

将查询/光标移到iterable上,让多处理为您分配工作

import psycopg2
from multiprocessing import Pool


def scanfile(row):
    #do something with row...


if __name__ == '__main__':
    conn = psycopg2.connect(a database)
    query = conn.cursor()
    query.execute(some query)
    pool = Pool()
    pool.map_async(scanfile, query).wait()
    pool.close()
    pool.join()

将查询/光标移到iterable上,让多处理为您分配工作

import psycopg2
from multiprocessing import Pool


def scanfile(row):
    #do something with row...


if __name__ == '__main__':
    conn = psycopg2.connect(a database)
    query = conn.cursor()
    query.execute(some query)
    pool = Pool()
    pool.map_async(scanfile, query).wait()
    pool.close()
    pool.join()

这听起来是个坏主意。检查到目前为止,它正在工作,它抓住行并用它做事情,但程序从未完成。这听起来是个坏主意。检查到目前为止它正在工作,它抓住行并用它做事情,但程序永远不会完成。