@Sirius3: Ich habe kein Informatik studiert und komme aus einer ganz anderen Ecke. Ich nutze Python momentan hauptsächlich, um bestimmte Aufgaben effizient und schnell zu bewältigen. Ansonsten sehe ich mich eher auf einem langen Weg und bin hier für die Rückmeldung und die Tipps sehr dankbar. Wenn ich hier auf Fragen antworte, dann ist es der Versuch meinerseits etwas zurückzugeben.
Für die Konsole habe ich mal Folgendes getestet:
Code: Alles auswählen
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
import collections
import multiprocessing
def process_item(item):
return {
'name': item.name,
'age': 2017 - item.born
}
def main():
Scientist = collections.namedtuple('Scientist', [
'name',
'born',
])
scientists = (
Scientist(name='Ada Lovelace', born=1815),
Scientist(name='Emmy Noether', born=1882),
Scientist(name='Marie Curie', born=1867),
Scientist(name='Tu Youyou', born=1930),
Scientist(name='Ada Yonath', born=1939),
Scientist(name='Vera Rubin', born=1928),
Scientist(name='Sally Ride', born=1951),
)
pool = multiprocessing.Pool()
result = pool.map(process_item, scientists)
print(tuple(result))
if __name__ == '__main__':
main()
input(">>> ")
und sehe dann diese Rückmeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "main0001.py", line 39, in <module>
main()
File "main0001.py", line 31, in main
result = pool.map(process_item, scientists)
File "C:\[...]\lib\multiprocessing\pool.py", line 268, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
File "C:\[...]\lib\multiprocessing\pool.py", line 657, in get
raise self._value
File "C:\[...]\lib\multiprocessing\pool.py", line 431, in _handle_tasks
put(task)
File "C:\[...]\lib\multiprocessing\connection.py", line 206, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File "C:\[...]\lib\multiprocessing\reduction.py", line 51, in dumps
cls(buf, protocol).dump(obj)
_pickle.PicklingError: Can't pickle <class '__main__.Scientist'>: attribute lookup Scientist on __main__ failed
Aus meiner Sicht sieht mein Skript korrekt aus und ich würde dann hier eigentlich erwarten, dass es dann auch durchläuft? Wie gesagt, im Moment ist es für mich eine Spielerei, das ist weit weg von dem, was ich eigentlich mache...