


How to use the thread pool map() method in Python to pass a multi-parameter list
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
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)
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']}次")
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
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
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])
After the list derivation is obtained, it is probably the list data content format below
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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

To run Python code in Sublime Text, you need to install the Python plug-in first, then create a .py file and write the code, and finally press Ctrl B to run the code, and the output will be displayed in the console.

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Golang is better than Python in terms of performance and scalability. 1) Golang's compilation-type characteristics and efficient concurrency model make it perform well in high concurrency scenarios. 2) Python, as an interpreted language, executes slowly, but can optimize performance through tools such as Cython.

Writing code in Visual Studio Code (VSCode) is simple and easy to use. Just install VSCode, create a project, select a language, create a file, write code, save and run it. The advantages of VSCode include cross-platform, free and open source, powerful features, rich extensions, and lightweight and fast.

Running Python code in Notepad requires the Python executable and NppExec plug-in to be installed. After installing Python and adding PATH to it, configure the command "python" and the parameter "{CURRENT_DIRECTORY}{FILE_NAME}" in the NppExec plug-in to run Python code in Notepad through the shortcut key "F6".
