使两个函数同时并行运行?

2024-09-24 06:31:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个阵列

myArray = array(url1,url2,...,url90)

我要同时执行这个命令三次

scrapy crawl mySpider -a links=url

每次有1个网址

^{pr2}$

当第一个完成他的工作,他会得到另一个网址

scrapy crawl mySpider -a links=url4

我读了this question,和{a2},我试着这样做:

import threading
from threading import Thread

def func1(url):

    scrapy crawl mySpider links=url

if __name__ == '__main__':
    myArray = array(url1,url2,...,url90)
    for(url in myArray):
        Thread(target = func1(url)).start()

Tags: importurllinksarraythreadscrapy网址threading
1条回答
网友
1楼 · 发布于 2024-09-24 06:31:25

当您编写target = func1(url)时,实际上是在运行func1,并将结果传递给Thread(不是引用来执行该函数)。这意味着函数在循环中运行,而不是在单独的线程中运行。在

你需要这样重写:

if __name__ == '__main__':
    myArray = array(url1,url2,...,url90)
    for(url in myArray):
        Thread(target=func1, args=(url,))).start()

然后告诉线程用参数(url,)运行func1

此外,您应该等待线程在循环之后完成,否则您的程序将在启动所有线程后立即终止。在

编辑: 如果您只想在同一时间运行3个线程,您可能需要使用ThreadPool:

^{pr2}$

相关问题 更多 >