Saya punya masalah dengan menggunakan multiprocessing di python3.

Saat menggunakan starmap, saya memiliki panjang daftar argumen yang berbeda seperti event_list(length: 8), confs(length:2), overwrite(length:1).

from multiprocessing import Pool
from iteltools import repeat
p = multiprocessing.Pool(processes=3)
for conf in confs:
  p.starmap( some_func, zip(event_list, repeat(conf), repeat(overwrite))

Kode di atas berfungsi dengan baik, tetapi memanggil starmap dua kali atau lebih membuat saya tidak nyaman.

Tolong beri tahu saya cara lain yang lebih baik untuk memperbaiki kode.

0
papayetoo 18 Juni 2020, 03:42

1 menjawab

Jawaban Terbaik

Anda dapat membuat satu generator nilai dan memprosesnya dengan satu ekspresi starmap sebagai berikut. Ini akan lebih sederhana bagi pembaca yang akrab dengan pustaka standar Python.

import multiprocessing
import itertools
p = multiprocessing.Pool(processes=3)
p.starmap(some_func, itertools.product(event_list, confs, overwrite))
0
Venkatesh-Prasad Ranganath 18 Juni 2020, 01:13