python开多少进程合适_Python是怎么回事多处理过程()知道要打开多少个并发进程?...

我正在运行一个脚本来获取数据库表的列表,检查每个表的行数,并将每个查询的结果追加到字典中。我使用多处理来加速它:Manager创建一个共享列表和共享字典,进程可以从中读取并附加到其中,Process用来设置进程。在from multiprocessing import Process, Manager

def main():

mgr = Manager()

# Function to get the list of tables

table_list = mgr.list(get_table_list())

counts = mgr.dict()

for table in table_list:

# get_table_count runs a 'SELECT COUNT(*) FROM

# the result to the counts dict

p = Process(target=select_star, args=(table, counts, 'prod'))

p.start()

p.join()

我的问题是,流程如何管理开放流程的数量?我习惯于将Pool()与apply\u async()方法一起使用,在这里,您可以在实例化池时指定进程数。在

如果这是用于本申请的最佳方法,请提供任何补充说明。在

感谢dano帮助实施以下两个解决方案:

1-使用Pool.apply_异步我已经习惯了:

^{pr2}$

2-使用池.map()与itertools.部分()from multiprocessing import Process, Manager, cpu_count

def main():

mgr = Manager()

table_list = get_table_list()

pool = Pool(cpu_count() / 2)

prod_counts = mgr.dict()

func = partial(get_table_count, result_dict=prod_counts, env='prod')

pool.map(func, table_list)

print prod_counts

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值