gpt4 book ai didi

python - Python 中在不同线程中调用相同函数的最佳方式是什么?

转载 作者:太空狗 更新时间:2023-10-30 02:16:31 25 4
gpt4 key购买 nike

在不重复函数的情况下,在不同的线程中调用相同的函数并为每个实例创建一个包含返回值的单独列表的最佳方法是什么?

例子:

import threading


def function(a):

returned_values = []

ct = threading.currentThread()
while getattr(ct, "do_run", True):
ret = do_something(a)
returned_values.append(ret)


t1 = threading.Thread(target=function, args=("AAA",))
t2 = threading.Thread(target=function, args=("BBB",))
t3 = threading.Thread(target=function, args=("CCC",))

t1.start()
t2.start()
t3.start()

import time;time.sleep(10)
t1.do_run = t2.do_run = t3.do_run = False

编辑:忘了说我使用的是 Python 2.7

最佳答案

使用线程池

类似这样的东西

from multiprocessing.pool import ThreadPool

pool = ThreadPool()
pool.map(function, list_containing_args)

P.S 它的工作方式类似于多进程映射。每个参数都有一个新线程。如果资源有限或列表很大,您可以指定要生成的线程数

from multiprocessing.pool import ThreadPool
import subprocess
def func(ip):
c=subprocess.Popen("ping -c 3 "+ip, shell=True, stdout=subprocess.PIPE)
output, error= c.communicate()
return output

pool = ThreadPool()
for i in pool.map(func,["127.0.0.1", "www.google.com", "www.facebook.com"]):
print i

关于python - Python 中在不同线程中调用相同函数的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43631344/

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