Table of Contents
The thread pool map() method passes a multi-parameter list
Thread pool concurrency requires the introduction of modules
its syntax For
Let’s take a look at the overall code first
Home Backend Development Python Tutorial How to use the thread pool map() method in Python to pass a multi-parameter list

How to use the thread pool map() method in Python to pass a multi-parameter list

Apr 29, 2023 pm 04:25 PM
python list map()

The thread pool map() method passes a multi-parameter list

Previously, threading.thread() was used to facilitate multi-threaded concurrency of the interface, but this is more useful when the number of concurrencies is small. If concurrency The number is large. In addition to the processing method of thread package coroutine, we can also use the thread pool method.

In layman's terms, the implementation of the thread pool is to put all tasks in the message queue, start multiple threads and then execute the threads. However, after the thread execution is completed, the thread tasks will not be interrupted and will continue to be obtained from the message queue. Thread tasks are executed in threads, so that the thread pool saves many steps of creating and closing threads compared to multi-threaded operations, saving most resources and time.

Thread pool concurrency requires the introduction of modules

import concurrent.futures
Copy after login

ThreadPoolExecutor There are two thread pool methods map() and submit(). Today we will talk about the map() method

its syntax For

 with concurrent.futures.ThreadPoolExecutor() as pool:
      res = pool.map(craw, uid_list)
      print(res)
Copy after login
  • map(), crawl is the method name, and the method name here does not contain ()

  • uid_list is a method parameter, the list data type needs to be passed in the map() method

Let’s take a look at the overall code first

5000 user concurrency assistance

    def test_case_09(self):
        """5000用户并发助力"""
        # 通过yaml配置文件封装方法 获取uid_list
        uid_list = YamlHandler(YamlThePath().number_new).get_uid_list()
        # add_ticket获取5000账号登陆状态
        with concurrent.futures.ThreadPoolExecutor() as pool:
            pool.map(AccountAccess().add_ticket, uid_list)
        # 5000账号线程池方法助力用户
        with concurrent.futures.ThreadPoolExecutor() as pool:
            pool.map(PreheatMethod().help, [(uid, self.A, 1) for uid in uid_list])
        # 获取用户被助力次数
        response = PreheatMethod().init(self.A)
        print(f"当前用户被助力次数 :{response['data']['userInfo']['helpedCount']}次")
Copy after login

Let’s take a look at the methods of the two interfaces to get a better understanding

The first is to get the login status add_ticket

    def add_ticket(self, uid):
        """
        获取单独用户t票
        :param uid: 单独用户uid
        :return:
        """
        self.data['url'] = ApiAddress().get_ticket
        self.data['host'] = ApiAddress().host
        self.params['uid'] = str(uid)
        self.params['type'] = 0
        self.data['params'] = json.dumps(self.params)
        res = r().post(url=ApiAddress().ticket, data=self.data)
        print(f'获取t票结果:{uid}{res}')
        return uid
Copy after login

A very simple interface request input parameter only has one uid, but pay attention The uid here is not a list, it is just a parameter.

Then some students will have questions. The method parameter passed in map() is a list of uid content.

The map() method is to store the parameters you need in the list and request the interface you specify through traversal.

Some people may ask at this time, because I asked myself the same question at the time, what if there are multiple parameters in a method, and some of these parameters are not even fixed content.

Let’s take a look at another method of requesting the help interface

    def help(self, agrs):
        """
        助力用户
        :param agrs: uid:当前用户uid to_uid:助力用户uid count:助力次数
        :return:
        """
        uid, to_uid, count = agrs
        self.attrs['toUid'] = str(to_uid)
        self.attrs['count'] = count
        response = r().response(uid, self.code, "help", **self.attrs)
        logger.info(f'help response uid:{uid} to_uid:{to_uid}\n{response}')
        return response
Copy after login

Yes, we pass it to the help interface through tuples, and assign the specified keyword positions to the specified ones through the tuple. Element assignment.

In the code of the thread pool, we use list derivation to facilitate the parameters in the uid_list into the tuple you specify. Of course, if there are multiple parameters here, you can also use a dictionary to facilitate the dictionary key and value as changing parameters, because the list comprehension returns you a list, so we put the required parameters in the tuple, and the tuple in the list, so that we can use map() for multi-parameter methods. The thread pool is concurrent.

with concurrent.futures.ThreadPoolExecutor() as pool:
            pool.map(PreheatMethod().help, [(uid, self.A, 1) for uid in uid_list])
Copy after login
rrree

After the list derivation is obtained, it is probably the list data content format below

How to use the thread pool map() method in Python to pass a multi-parameter list

The above is the detailed content of How to use the thread pool map() method in Python to pass a multi-parameter list. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Can the Python interpreter be deleted in Linux system? Can the Python interpreter be deleted in Linux system? Apr 02, 2025 am 07:00 AM

Regarding the problem of removing the Python interpreter that comes with Linux systems, many Linux distributions will preinstall the Python interpreter when installed, and it does not use the package manager...

How to solve the problem of Pylance type detection of custom decorators in Python? How to solve the problem of Pylance type detection of custom decorators in Python? Apr 02, 2025 am 06:42 AM

Pylance type detection problem solution when using custom decorator In Python programming, decorator is a powerful tool that can be used to add rows...

How to solve permission issues when using python --version command in Linux terminal? How to solve permission issues when using python --version command in Linux terminal? Apr 02, 2025 am 06:36 AM

Using python in Linux terminal...

Python 3.6 loading pickle file error ModuleNotFoundError: What should I do if I load pickle file '__builtin__'? Python 3.6 loading pickle file error ModuleNotFoundError: What should I do if I load pickle file '__builtin__'? Apr 02, 2025 am 06:27 AM

Loading pickle file in Python 3.6 environment error: ModuleNotFoundError:Nomodulenamed...

Do FastAPI and aiohttp share the same global event loop? Do FastAPI and aiohttp share the same global event loop? Apr 02, 2025 am 06:12 AM

Compatibility issues between Python asynchronous libraries In Python, asynchronous programming has become the process of high concurrency and I/O...

What should I do if the '__builtin__' module is not found when loading the Pickle file in Python 3.6? What should I do if the '__builtin__' module is not found when loading the Pickle file in Python 3.6? Apr 02, 2025 am 07:12 AM

Error loading Pickle file in Python 3.6 environment: ModuleNotFoundError:Nomodulenamed...

How to ensure that the child process also terminates after killing the parent process via signal in Python? How to ensure that the child process also terminates after killing the parent process via signal in Python? Apr 02, 2025 am 06:39 AM

The problem and solution of the child process continuing to run when using signals to kill the parent process. In Python programming, after killing the parent process through signals, the child process still...

See all articles