@ru_python

Страница 9250 из 9768
Tishka17
05.06.2019
13:28:13
Почему?
кажется два раза один ключ

Tynuk
05.06.2019
13:28:17
def new_last_id(id_, message): data = {message.chat.id: id_} database= {} with open('data.json','rt') as file_: database = json.load(file_) database.update(data) with open('data.json','wt') as file_: json.dump(database, file_) def get_last_id(message): with open('data.json','rt') as file_: database = json.load(file_) print(database) last_id = database.get(str(message.chat.id)) return last_id

Ringo
05.06.2019
13:28:42
Tishka17
05.06.2019
13:29:07
кинь файлом

Google
Tishka17
05.06.2019
13:29:16
только не копипасть плиз!

прям как есть

да не

json

Denis
05.06.2019
13:48:02
в новом процессе аргумент в чем передается?

ну тип я создаю процесс и в него пихаю таблицу размером например в 1гб

Tishka17
05.06.2019
13:48:25
ты щас кому?

Denis
05.06.2019
13:48:27
куда он его закинет

ты щас кому?
допустим тебе

Tishka17
05.06.2019
13:48:35
как пихаешь?

Denis
05.06.2019
13:49:09
как пихаешь?
pool.apply_async(func, (table, ))

ну явно не на стек таблица кладется

Tishka17
05.06.2019
13:50:17
хм. винда или линукс?

Google
Tishka17
05.06.2019
13:50:29
в линуксе вроде форкнется

и ничего не будет копироваться

а дальше линуксовый CoW

Alex
05.06.2019
13:51:29
эээм... вы про multiprocessing.Pool?

Tishka17
05.06.2019
13:52:04
вроде, но я не уверен

эээм... вы про multiprocessing.Pool?
или он будет всегда пиклить?

Alex
05.06.2019
13:52:50
или он будет всегда пиклить?
будет пиклить и пихать в очередь.

Denis
05.06.2019
13:52:57
хм. винда или линукс?
линукс конечно

ну, где она находится я имею ввиду

Alex
05.06.2019
13:53:37
в какую очередь?
multiprocessing.Queue

Tishka17
05.06.2019
13:53:41
будет пиклить и пихать в очередь.
хм. То есть надежнее "глобальная" переменная?

Denis
05.06.2019
13:54:21
хм. То есть надежнее "глобальная" переменная?
так у процессов не может быть глобальных переменных

Tishka17
05.06.2019
13:54:29
что это?

Denis
05.06.2019
13:54:33
у них же разделяемая память

Alex
05.06.2019
13:54:43
Tishka17
05.06.2019
13:54:47
ну я не про общую

Denis
05.06.2019
13:54:52
видимо с некоторыми средствами обмена типа очереди

Alex
05.06.2019
13:54:59
ну с глобальной переменной это конечно будет работать

Google
͏
05.06.2019
13:55:01
что это?
подозреваю, что реклама

Alex
05.06.2019
13:55:28
но лучше бы сделать shared memory с дочерним процессом явно

Tishka17
05.06.2019
13:55:53
имхо, если данные не планируется менять, лучше просто форкнуться и переиспользовать

Alex
05.06.2019
13:56:07
проблема лишь в том что в мультипроцессинг до 3.8 shared memory не завезли из коробки.

Denis
05.06.2019
13:56:08
а как сделать то так?

Alex
05.06.2019
13:56:15
в смысле он ее использует под капотом но API нет.

Denis
05.06.2019
13:57:21
лучше бы завезли треды нормальные

Alex
05.06.2019
13:57:29
треды нормальные

Denis
05.06.2019
13:57:56
треды нормальные
только не дают прироста из-за гил?

Alex
05.06.2019
13:58:31
только не дают прироста из-за гил?
дают в определенных условиях.

и отлично решают свою задачу

Denis
05.06.2019
13:58:48
имхо, если данные не планируется менять, лучше просто форкнуться и переиспользовать
ты предлагаешь заново для каждого процесса загружать таблицу с диска или как?

Tishka17
05.06.2019
13:58:55
нет

Admin
ERROR: S client not available

Google
S
05.06.2019
13:59:01
set(lst) & set(other)

Подскажите, вылетело из головы, можно лямдой - найти свовпадение в поле объекта в списке объектов.. if a_name in (x.name for x in x_arr) - что то похожее на это

Tishka17
05.06.2019
13:59:28
ты предлагаешь заново для каждого процесса загружать таблицу с диска или как?
ну был пример с глобальной переменной - но это грубо. Можно просто запускать метод объекта вместо функции, буде твроде то же самое

Tishka17
05.06.2019
14:00:49
не понимаю что ты имеешь ввиду
x=[...] def func(): global x ... multiprocssing(func, something)

Denis
05.06.2019
14:01:13
x=[...] def func(): global x ... multiprocssing(func, something)
утверждается что не будет пикла?

Tishka17
05.06.2019
14:01:15
не понимаю что ты имеешь ввиду
правда адо уточнить что конкретно ты делаешь

Alex
05.06.2019
14:01:28
x=[...] def func(): global x ... multiprocssing(func, something)
но имхо это слегка костыль

Tishka17
05.06.2019
14:01:33
Tishka17
05.06.2019
14:01:36
это PoC

вопрос что у него там

map или ещё что

Denis
05.06.2019
14:02:02
правда адо уточнить что конкретно ты делаешь
ну если конкретно, то я загружаю кучу таблиц из памяти и попарно рассчитываю некоторую другую функцию, определенную как f(table1, table2)

Tishka17
05.06.2019
14:02:22
если мап, он не пикли твесь список, он посылает по элементу

если конечно каждый элеент гигабайт, имеет смысл посылать только номера

если мелкие, то выигрыша не будет

Alex
05.06.2019
14:03:29
в теории можно как-то через https://docs.python.org/3.7/library/multiprocessing.html#module-multiprocessing.sharedctypes попробовать

Google
Tishka17
05.06.2019
14:05:18
но имхо это слегка костыль
class Runner: def run(self, data): self.data = data pool.map(self.apply, range(len(data)) def apply(self): ... r = Runner() r.run()

куча таблиц по 30-40 мб
откуда они у тебя вообще разом в памяти?

Denis
05.06.2019
14:05:56
откуда они у тебя вообще разом в памяти?
подгрузил, оперативка позволяет

Tishka17
05.06.2019
14:06:15
ну ты можешь чтобы каждый просто грузил только то что ему надо

Denis
05.06.2019
14:06:55
ну ты можешь чтобы каждый просто грузил только то что ему надо
проблема в том, что предполагается частое переиспользование

Tishka17
05.06.2019
14:07:17
ну вон ещё костыль

Страница 9250 из 9768