Multiprocessing inzira yakakurumbira muPython programming iyo inokutendera kuti umhanye maitiro akati wandei panguva imwe chete, kazhinji zvichikonzera kuvandudzwa kwekuita uye kushandiswa kwakanyanya kwemasystem zviwanikwa. Ichi chinyorwa chinonyura mukushandiswa kwe multiprocessing raibhurari muPython, kunyanya kutarisa pa mepu basa. Basa remepu rinokutendera kuti uise basa kune chimwe nechimwe chinhu mune iterable, senge runyorwa, uye dzorera runyoro rutsva nemhedzisiro. Nekuwedzeredza kuwanda, isu tinokwanisa kufananidzira iyi nzira kuti inyatso kushanda uye scalability.
Muchinyorwa chino, isu tichaongorora dambudziko rekuti kuwanda kwekuita nemepu basa kunogona kuve mhinduro yakanaka, kurukura nezvemaraibhurari akakodzera uye mabasa, topa nhanho-ne-nhanho tsananguro yekodhi, uye ongorora mune zvine hukama misoro inovaka kumusana. ye multiprocessing uye basa remepu.
Multiprocessing Mepu: Dambudziko uye Solution
Dambudziko ratinovavarira kugadzirisa nderekuvandudza mashandiro uye kugona kwekushandisa basa kune chimwe nechimwe chinhu mune yakakura iterable, senge runyorwa, tuple, kana chero chimwe chinhu chinotsigira iteration. Kana watarisana nemabasa akadai, kushandisa yakavakirwa-mukati mepu basa kana rondedzero kunzwisisa kunogona kunonoka uye kusashanda.
Mhinduro ndeyokushandisa multiprocessing raibhurari muPython, kunyanya, iyo dziva class uye yayo mepu nzira. Nokushandisa the multiprocessing Pool.map() basa, tinogona kugovera kuitwa kwebasa redu kune akawanda maitiro.
Tsanangudzo-nhanho-nhanho yeCode
Ngatipwanye kodhi uye tiratidze mashandisiro ekuita mepu yakawanda kuita basa nemazvo:
import multiprocessing import time def square(n): time.sleep(0.5) return n * n # Create the list of numbers numbers = list(range(10)) # Initialize the multiprocessing Pool pool = multiprocessing.Pool() # Use the map function with multiple processes squared_numbers = pool.map(square, numbers) print(squared_numbers)
- Kutanga, import the multiprocessing module, iyo ine zvishandiso zvinodiwa kushandisa parallel process muPython.
- Gadzira basa rinonzi square iyo inongorara kwehafu yesekondi yodzosa sikweya yenharo yayo yekupinza. Basa iri rinotevedzera kuverenga kunotora nguva inonzwisisika kuti kupedze.
- Gadzira runyoro runodanwa nhamba, iyo ine nhamba kubva pa0 kusvika pa9 (inosanganisira).
- Kutanga a dziva chinhu kubva pane multiprocessing module. Chinhu cheDziva chinoshanda senzira yekugadzirisa maitiro evashandi ayo aunoshandisa kufananidza mabasa ako.
- Fonera iyo mepu nzira pamudziva chinhu, uye pfuura mu square basa uye iyo nhamba list. Nzira yemepu inobva yashandisa sikweya basa kuchinhu chimwe nechimwe chiri murunyoro rwenhamba panguva imwe chete, uchishandisa maitiro anowanikwa evashandi mudziva.
- Prinda runyorwa rwabuda rwesquared_numbers, dzinofanira kuva nenhamba dzine mativi mana kubva parunyorwa rwenhamba.
Python Multiprocessing Library
The Python multiprocessing raibhurari inopa intuitive nzira yekushandisa parallelism muchirongwa chako. Iyo inovhara kumwe kuomarara kunowanzo kuenderana neyakafanana hurongwa nekupa yakakwira-level abstractions senge. dziva. Iyo Pool kirasi inorerutsa kugoverwa kwebasa kune akati wandei maitiro, zvichiita kuti mushandisi awane mabhenefiti epaparallel kugadzirisa nekunetseka kudiki.
Python Itertools Module uye Related Mabasa
Nepo multiprocessing iri mhinduro yakanaka kune akawanda anofanana mabasa, zvakakodzera kutaura kuti Python inopawo mamwe maraibhurari uye maturusi anoenderana nezvinodiwa zvakafanana. Iyo itertools module, semuenzaniso, inopa hupfumi hwemabasa anoshanda pane iterables, kazhinji nekuvandudza kugona. Mamwe ma itertools anoshanda senge imap () uye imap_unordered() inogona kufananidza maitiro ekushandisa basa kune iterable. Nekudaro, zvakakosha kuti uzive kuti itertools inotarisa zvakanyanya pane iterator-yakavakirwa mhinduro, nepo raibhurari yekuwedzera yakawanda inopa nzira yakazara yekufananidza, ichipa mamwe maturusi uye kugona kupfuura mepu-senge mabasa.