基本上我現在有一個執行緒代碼,但我想嘗試轉換為多處理池以測驗性能
user_dict = {
'users': [
{
'username': 'test1',
'password': 'opop1',
},
{
'username': 'test2',
'password': 'opop2',
}
]
}
thread_list = []
for user in user_dict['users']:
ct = threading.Thread(
target=task,
args=(
some_object,
some_other_object,
another_object,
user['username'],
user['password']
)
)
ct.start()
thread_list.append(ct)
for thread in thread_list:
thread.join()
一些基本的東西,我的任務函式將根據每個用戶的用戶名和密碼進行一些登錄,然后繼續分配一些資訊來呼叫 api 端點以獲取資料并寫入 json 檔案。
但我不知道如何將其轉換為多處理池,因為我不確定如何傳遞我的 user_dict 和其他所需的物件資訊。
uj5u.com熱心網友回復:
您可以創建一個Pool并在串列中使用您的函式和引數來提供它starmap。引數減少到 usr/pwd:
from multiprocessing import Pool
user_dict = {
'users': [
{
'username': 'test1',
'password': 'opop1',
},
{
'username': 'test2',
'password': 'opop2',
}
]
}
def task(usr, pwd):
print(usr, pwd, sep=", ")
return (usr,pwd)
if __name__ == '__main__':
pool = Pool(processes=len(user_dict['users']))
results = pool.starmap(task, [tuple(el.values()) for el in user_dict['users']])
results包含每個池成員的所有回傳值:
[('test1', 'opop1'), ('test2', 'opop2')]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/535807.html
上一篇:Jmeter:順序和并行執行
