python如何批量定义函数来批量启动多线程?
本帖最后由 Zeaf 于 2020-5-6 10:40 编辑想爬取网页上多页图片,并且每一页用一个线程跑
已知:页数为i(不确定)
目标:批量定义函数并启动线程
例如i=5时:
if __name__ == '__main__':
t1 = threading.Thread(target=get_img_1) #第一个线程
t2 = threading.Thread(target=get_img_2) #第二个线程
t3 = threading.Thread(target=get_img_3) #第三个线程
t4 = threading.Thread(target=get_img_4)
t5 = threading.Thread(target=get_img_5)
t1.start() #启动第一个线程
t2.start() #以此类推
t3.start()
t4.start()
t5.start()
可能我只是不会用这个线程吧....想着随机得到一个i能够自动多线程跑,每页一个线程,如何做到呢?
CSDN果然最强,原来元组要加逗号的,代码如下
if __name__ == '__main__':
for x in range(1,i+1):
threading.Thread(target=get_img, args=(x,)).start()#def get_img(x) for可以吗 本帖最后由 Zeaf 于 2020-5-6 10:24 编辑
hhxk 发表于 2020-5-6 10:13
for可以吗
怎么弄?
for i in range(i+1):
def get_img_i():
我这样肯定不行...
我觉得我得去看看线程,说不定加个参数可以实现....
大概类似这样?
for i in range(i+1):
threading.Thread(target=get_img, args=(i)).start#def get_img(i)
大佬能帮我解答最好了~ 放列表里装起来怎样 本帖最后由 assdqwe123 于 2020-5-6 10:34 编辑
这样pool = []
for i in range(5):
pool.append(threading.Thread(target=get_img, arg=(i,)))
for thread in pool:
thread.start() assdqwe123 发表于 2020-5-6 10:27
这样pool = []
for i in range(5):
pool.append(threading.Thread(target= ...
那个get_img_i中的i也会变化吗?是不是加参数好些 Zeaf 发表于 2020-5-6 10:31
那个get_img_i中的i也会变化吗?是不是加参数好些
函数函数,搞错了 assdqwe123 发表于 2020-5-6 10:33
函数函数,搞错了
我解决了,就是加参数,不过必须加元组{:1_926:} 从0开始的小小怪 发表于 2020-5-6 10:26
放列表里装起来怎样
我解决了,放列表麻烦了