gpt4 book ai didi

python - 使用Python中的线程将参数从列表传递给函数

转载 作者:行者123 更新时间:2023-12-01 02:27:58 25 4
gpt4 key购买 nike

我正在尝试使用 python 中的线程将参数从列表传递给函数(注意:函数的值不应被硬编码,列表中的所有元素都将被传递。)请查看此处的示例代码:

from threading import Thread
list=['john','doe','srav','dev','app']
def m1(name,prefix):
for ele in range(2):
print(name +prefix)

def main1():
t1=Thread(target=m1,args=('abcd','john'))
t2 = Thread(target=m1, args=('abcd', 'doe'))
t1.start()
t2.start()

if __name__ == '__main__':
main1()

在这里,我将值硬编码到函数('john','doe'),而不是从列表中传递,并且所有元素都将被传递。

最佳答案

您的任务非常适合与concurrent.futures一起使用模块。特别是Executor.map将函数应用于可迭代的元素。

您可以使用类似于 ThreadPoolExecutor 的内容docs 中的示例:

from concurrent.futures import ThreadPoolExecutor
from itertools import repeat

names = ['john', 'doe', 'srav', 'dev', 'app']
def m1(name, prefix):
for _ in range(2):
print(name + prefix)

with ThreadPoolExecutor(2) as executor:
executor.map(m1, repeat('abcd', len(names)), names)

如果您发现 repeat 语法很尴尬,您有几种选择:

with ThreadPoolExecutor(2) as executor:
for name in names:
executor.submit(m1, 'abcd', name)

或者

with ThreadPoolExecutor(2) as executor:
executor.map(lambda name: m1('abcd', name), names)

在所有情况下,with block 都会隐式调用 executor.shutdown ,这将等待所有任务完成。

通常,不要调用变量 list:它会隐藏内置类的名称。

关于python - 使用Python中的线程将参数从列表传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47174001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com