Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5912

[Python-de] multiprocessing.Manager: Kann ich damit das Pickel reduzieren?

Path csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail
From c.buhtz@posteo.jp
Newsgroups de.comp.lang.python
Subject [Python-de] multiprocessing.Manager: Kann ich damit das Pickel reduzieren?
Date Mon, 05 Dec 2022 14:20:55 +0000
Lines 48
Message-ID <65ae8c8a7e0892ad66a1462c43b4620f@posteo.de> (permalink)
Mime-Version 1.0
Content-Type text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding quoted-printable
X-Trace news.uni-berlin.de cvIGdJvAkDPy8JFQAYKcFg5fzzSWaTAOtSDaQU8/rUuw==
Authentication-Results mail.python.org; dkim=pass reason="2048-bit key; unprotected key" header.d=posteo.jp header.i=@posteo.jp header.b=oFbUs+2G; dkim-adsp=pass; dkim-atps=neutral
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.jp; s=2017; t=1670250056; bh=1jfHqnq7aI6E+jauazt3vB75WY2pVnbSC+EAP1V23vA=; h=Date:From:To:Subject:From; b=oFbUs+2GeqSQeTBmdBaFZrIWojRI/bNfm1VVsGssaJQHSArUrfrq49+qQbFlj2tec 3SazYbfL5BmZcJodMXDkl//hxb33XZ31R31Jmj5xS4P1IUhgMu9cOo8AH+BZEIrAVW 1FhsmezdTbPkNJwj/NZElaj0abAUgnJoZzt5sAUGz+ZabVnufs/LSDCBhfJtsovnU4 JRKYMhmcUnEORdIes7QiKXQE09niw0tqA0Uqvl/rMzJcKCk8O7RX4b0uQilTOHxOoB ad3hoHYi76VpQvxf0Cv8c2qh1CXD50nqFcReHfYL1OSWv8O2TgGl/oTwburflUHYcF Rr11ChCE2VFpQ==
Mail-Followup-To Python de <python-de@python.org>
Message-ID-Hash W3RXEABOFPE6TGS4K5DQXV3L3PJN46VN
X-Message-ID-Hash W3RXEABOFPE6TGS4K5DQXV3L3PJN46VN
X-MailFrom c.buhtz@posteo.jp
X-Mailman-Rule-Misses dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-python-de.python.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version 3.3.7
Precedence list
List-Id Die Deutsche Python Mailingliste <python-de.python.org>
Archived-At <https://mail.python.org/archives/list/python-de@python.org/message/W3RXEABOFPE6TGS4K5DQXV3L3PJN46VN/>
List-Archive <https://mail.python.org/archives/list/python-de@python.org/>
List-Help <mailto:python-de-request@python.org?subject=help>
List-Owner <mailto:python-de-owner@python.org>
List-Post <mailto:python-de@python.org>
List-Subscribe <mailto:python-de-join@python.org>
List-Unsubscribe <mailto:python-de-leave@python.org>
Xref csiph.com de.comp.lang.python:5912

Show key headers only | View raw


Hallo,

ich arbeite schon länger mit "multiprocessing" und auch 
"concurrent.futures.ProcessPoolExecutor". Ich kenne den Unterschied 
zwischen Thread und Process und weiß auch, dass bei Prozessen ordentlich 
Ressourcen für das Pickeln draufgehen können. Genau hier ist mein 
Problem.

Ich verteile die (ausschließlich lesenden!) Aufgaben an einem 
pandas.DataFrame (z.B. 20 Spalten und 700.000 Zeilen) auf mehrere 
Prozesse. Das geht meist gut, wenn ich den DataFrame sinnvoll in 
"Scheiben" schneiden und an die Prozesse verteilen kann.

Manchmal ist es inhaltlich, aber nicht sinnvoll und ich muss eigentlich 
den gesamten DataFrame an die Prozesse verteilen, ohne dessen Umfang vor 
dem Pickeln reduzieren zu können. Gefühlt würde ich sagen, dass Python 
das Pickeln für jeden Prozess erneut vornimmt, anstatt nur einmal zu 
Pickeln und das dann einfach zu kopieren. Bin mir bei dem Punkt nicht 
sicher.

Nun habe ich vom Manager 
(https://docs.python.org/3/library/multiprocessing.html#managers) gehört 
und dass es da eine Art proxy Datenobjekt gibt. Ein Manager wäre gut 
geeignet, um Daten zwischen Prozessen zu teilen. Klingt so, also ob ich 
da kein Pickeling befürchten müsste. Es geht hier wohlgemerkt nur um 
lesende Zugriffe. Keine Schreiboperationen auf dem DataFrame.

Bin ich da auf dem richtigen Weg?

Die Frage ist allerdings, wie der Manager das implementiert. Nehmen wir 
doch mal ein 700.000 Zeilen DataFrame an. Der liegt dann nur 1x im 
Speicher, dazu je Prozess ein ProxyObjekt. Pandas vektorisiert ja gerne. 
Ich bin da unsicher, ob so ein Proxy das Handeln kann, wie pandas auf 
das DataFrame zugreift. Mein Speicher ist nicht das Problem, davon habe 
ich genug. Das Problem ist die Geschwindigkeit mit welcher der Speicher 
zwischen den Prozessen "geteilt" (also bspw. gepickelt) wird.

Was meint ihr dazu?

SG
Christian

Back to de.comp.lang.python | Previous | NextNext in thread | Find similar


Thread

[Python-de] multiprocessing.Manager: Kann ich damit das Pickel reduzieren? c.buhtz@posteo.jp - 2022-12-05 14:20 +0000
  Re: [Python-de] multiprocessing.Manager: Kann ich damit das Pickel reduzieren? "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-05 20:51 +0100

csiph-web