Как мы можем сделать кортеж ВСЕХ результатов, созданных из "я в диапазоне (x) что-то сделать", используя многопроцессорность?
Попробовал простую многопроцессорность, но не может найти способ получить результатыв одной переменной кортежа.
Я предполагаю, что многопроцессорная обработка для моего случая, скажем, для создания кортежа из 10000 строк, должна работать быстрее при использовании многопроцессорной обработки, чем просто со стандартным кодом "для i в ragne [x] makeновую строку и добавить ее ... "?Например, если вместо 10000 строк мне нужно было создать 10000 строковых результатов, каждый из которых требовал тяжелой работы ЦП?
import random, string, time, multiprocessing
def randomString(stringLength=10):
"""Generate a random string of fixed length """
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(stringLength))
def worker(num):
workdone = randomString(20)
print("Worker: ", num, "Workdone: ", workdone)
return # how do I return the workdone string?
if __name__ == '__main__':
starttime = time.time()
jobs = []
Alladdr = []
for i in range(10):
p = multiprocessing.Process(target=worker, args=(i,))
# How do I create a tuple (let's call it Totalworkdone) of all workdone results?
jobs.append(p)
p.start()
# print()
# print("All workdone = ", Totalworkdone) # Totalworkdone should be the tuple of ALL the workdone ever created in my loop
print()
print('That took {} seconds'.format(time.time() - starttime))
Привет всем.Мне нужно получить все результаты, созданные работником с использованием многопроцессорной обработки, в одном «большом» кортеже.
Например, если «for i in range [20]» заставляет работника создавать 20 случайных строк, мне нужно иметь возможность работать с переменной Totalworkdone, которая является кортежем ВСЕХ строк, созданныхработник.Мне все равно, если они в случайном порядке, это нормально.
Любая помощь приветствуется, но, пожалуйста, воздержитесь от URL-адресов, указывающих на длинный и запутанный код, так как я новичок, пытающийся сделать только что вышеперечисленное, чтобы я мог учиться и двигаться вперед.Спасибо всем заранее.