python-multi-process

code_len = len(codes)
cpus = os.cpu_count()
per_thread_cnt = int(code_len / cpus)
code_len = len(codes)
if cpus is None:
cpus = 8

futures = []
with concurrent.futures.ProcessPoolExecutor(max_workers=cpus) as executor:
for i in range(0, cpus):
stop = per_thread_cnt * (i + 1)
if i == cpus - 1:
stop = code_len
code_list = codes[per_thread_cnt * i:stop]
futures.append(executor.submit(download_datas, param, code_list))

for future in concurrent.futures.as_completed(futures):
try:
data = future.result()
except Exception as exc:
print('generated an exception: %s' % exc)