У меня есть большое количество функций, и каждый из них должен загружать URL-адрес из списка и выполнять некоторые операции. Мне нужно, чтобы все функции выполнялись параллельно, если это возможно, и каждая функция должна параллельно загружать URL-адреса из списка. У меня есть код здесь, но я не уверен, что он делает то, что я сделал, или это можно сделать проще? Спасибовыполнять несколько функций параллельно
class Multi(object):
#----------------------------------------------------------------------
def __init__(self, urls_func1, urls_func2):
""" Initialize class with list of urls """
self.urls_func1 = urls_func1
self.urls_func2 = urls_func2
#----------------------------------------------------------------------
def func1(self, url, que):
"do something"
que.put(result_func1)
#----------------------------------------------------------------------
def func2(self, url, que):
"do something"
que.put(result_func2)
#----------------------------------------------------------------------
def run(self):
"For func1"
jobs = []
queue1=[]
for url in urls_func1:
queue1.append(Queue())
process = multiprocessing.Process(target=self.func1, args=(url,queue1[len(jobs)],))
jobs.append(process)
process.start()
for job in jobs:
job.join()
"For func2"
jobs = []
queue2=[]
for url in urls_func1:
queue2.append(Queue())
process = multiprocessing.Process(target=self.func2, args=(url,queue2[len(jobs)],))
jobs.append(process)
process.start()
for job in jobs:
job.join()
return result_func1, result_func2
#----------------------------------------------------------------------
if __name__ == "__main__":
urls_for_func1=['www.google.com', 'www.google.com', 'www.google.com', 'www.google.com']
urls_for_func2=['www.google.com', 'www.google.com', 'www.google.com']
a,b=(Multi(urls_for_func1, urls_for_func2).run())
EDIT: Коррекция имен переменных
«Я не уверен, если это то, что я metioned [так в оригинале]»? Вы даже пробовали? – jonrsharpe
Это работает, конечно, просто работает ли она параллельно? – Jovan
у кого есть предложение? – Jovan