Zeaf 发表于 2020-5-6 10:10

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)

hhxk 发表于 2020-5-6 10:13

for可以吗

Zeaf 发表于 2020-5-6 10:20

本帖最后由 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)
大佬能帮我解答最好了~

从0开始的小小怪 发表于 2020-5-6 10:26

放列表里装起来怎样

assdqwe123 发表于 2020-5-6 10:27

本帖最后由 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()

Zeaf 发表于 2020-5-6 10:31

assdqwe123 发表于 2020-5-6 10:27
这样pool = []
for i in range(5):
    pool.append(threading.Thread(target= ...

那个get_img_i中的i也会变化吗?是不是加参数好些

assdqwe123 发表于 2020-5-6 10:33

Zeaf 发表于 2020-5-6 10:31
那个get_img_i中的i也会变化吗?是不是加参数好些

函数函数,搞错了

王星星 发表于 2020-5-6 10:36

Zeaf 发表于 2020-5-6 10:41

assdqwe123 发表于 2020-5-6 10:33
函数函数,搞错了

我解决了,就是加参数,不过必须加元组{:1_926:}

Zeaf 发表于 2020-5-6 10:41

从0开始的小小怪 发表于 2020-5-6 10:26
放列表里装起来怎样

我解决了,放列表麻烦了
页: [1] 2 3
查看完整版本: python如何批量定义函数来批量启动多线程?