python列表内有很多字典参数,需要传递给执行函数运行,我想使用多线程运行,线程数是可以自定义的,我应该怎么实现这个功能?

python列表内有很多字典参数,需要传递给执行函数运行,我想使用多线程运行,线程数是可以自定义的,我应该怎么实现这个功能?

  • 我有一个列表字典:

    my_list = [{'ip':'192.168.1.2','password':'123456','user_name':'654321'},{'ip':'192.168.1.3','password':'123456','user_name':'654321'},{'ip':'192.168.1.4','password':'123456','user_name':'654321'},{'ip':'192.168.1.5','password':'123456','user_name':'654321'},

    {'ip':'192.168.1.6','password':'123456','user_name':'654321'}]

  • 我有一个执行函数

    def dosome(ip,password,user_name):

    run.....

我应该怎么使用多线程进行传递参数并运行dosome(ip,password,user_name)?并且线程数我是可以设置的,比如,我线程数设置2个,第一次2个线程执行

dosome(ip='192.168.1.2',password='123456',user_name='654321')

dosome(ip='192.168.1.3',password='123456',user_name='654321')

上线线程跑完了才开始执行后面的

dosome(ip='192.168.1.4',password='123456',user_name='654321')

dosome(ip='192.168.1.5',password='123456',user_name='654321')

直到最后执行完所有的列表内的字典参数

dosome(ip='192.168.1.6',password='123456',user_name='654321')


回答:

ThreadPoolExecutor线程池即可

python"># -*- coding: UTF-8 -*-

__author__ = 'lpe234'

import time

from concurrent.futures import ThreadPoolExecutor

import threading

my_list = [

{'ip': '192.168.1.2', 'password': '123456', 'user_name': '654321'},

{'ip': '192.168.1.3', 'password': '123456', 'user_name': '654321'},

{'ip': '192.168.1.4', 'password': '123456', 'user_name': '654321'},

{'ip': '192.168.1.5', 'password': '123456', 'user_name': '654321'},

{'ip': '192.168.1.6', 'password': '123456', 'user_name': '654321'}

]

def dosome(ip, password, user_name):

tname = threading.current_thread().getName()

time.sleep(1)

print(f'{tname} {ip}')

tpe = ThreadPoolExecutor(max_workers=3)

for m in my_list:

tpe.submit(dosome, **m)

以上是 python列表内有很多字典参数,需要传递给执行函数运行,我想使用多线程运行,线程数是可以自定义的,我应该怎么实现这个功能? 的全部内容, 来源链接: utcz.com/p/938811.html

回到顶部