Пытаюсь найти способ упростить мой блок кода

Разница между dispatch_sync и dispatch_async проста.

В обоих ваших примерах TASK 1 всегда будет выполняться до TASK 2, потому что он был отправлен перед ним.

Однако в примере dispatch_sync вы не отправите TASK 2 до тех пор, пока TASK 1 не будет отправлен и не будет выполнен . Это называется «блокировка» . Ваш код ждет (или «блокирует») до выполнения задачи.

В примере dispatch_async ваш код не будет ждать завершения выполнения. Оба блока отправят (и будут выставлены в очередь) в очередь, а остальная часть вашего кода продолжит выполнение этого потока. Затем в какой-то момент в будущем (в зависимости от того, что еще было отправлено в вашу очередь), Task 1 выполнит, а затем выполнит Task 2.

-3
задан Emm 16 January 2019 в 22:22
поделиться

2 ответа

Таким образом, я упростил этот код, выполнив цикл for по списку 2009-2018 годов и применив функцию для деления каждого элемента в каждом списке на общее количество в каждом списке и умножения его на 100, а затем с помощью pd. DataFrame для создания dataframe и указания имен индексов, которые я бы использовал

a = [x/sum(x)*100 for x in [nine,ten,eleven,twelve,thirteen,fourteen,fifteen,sixteen,seventeen,eighteen]]
pd.DataFrame(a, index= my_names)
0
ответ дан Emm 16 January 2019 в 22:22
поделиться

Общая форма будет

ser = []
for year in my_names:
    ser.append(
        x/sum(fb_posts2[fb_posts2['year']==year].groupby('title').size()) * 100

Или, как понимание списка:

ser = [x/sum(fb_posts2[fb_posts2['year']==year].groupby('title').size()) * 100
    for year in my_names]

Это должно быть в состоянии заменить ваши 3 набора из 10 повторяющихся строк.

0
ответ дан Prune 16 January 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: