Вызов функции с использованием многопроцессорной обработки не выполняется в python jupyter notebook на Windows - PullRequest
0 голосов
/ 23 марта 2020
import os


def bin_for_continuous(i, DV, IV):
    x=[]
    q=str()
    left_bound=pd.qcut(Binning[DV],10).unique()[i].left
    right_bound=pd.qcut(Binning[DV],10).unique()[i].right
    q=str(left_bound)+"-"+str(right_bound)
    x=[x for x in Binning.loc[(Binning[DV] > left_bound)&(Binning[DV]<=right_bound)].iloc[:,0]]
    print(i)
    for j in x:
        df2.loc[df2[IV]==j, IV]=q

def info(title):
    print(title)
    print('module name:', __name__)
    print('parent process:', os.getppid())
    print('process id:', os.getpid())

processes=[]
def main():
    info('main line')
    for i in range(10):
        p1=mp.Process(target=bin_for_continuous,args=[i,"item_cnt_day", "shop_id"])
        p1.start()
        processes.append(p1)

    for process in processes:
        process.join()

if __name__ == '__main__':
    main()

Ожидаемый вывод:

main line
module name: __main__
parent process: 18692
process id: 15836
0
1
2
3
4
5
6
7
8
9

Это единственный вывод, который я получаю:

main line
module name: __main__
parent process: 18692
process id: 15836

Кажется, что функция никогда не вызывалась кодом. Выполнение кода без многопроцессорной обработки дает результаты, но использование многопроцессорной обработки не дает результатов. Я пытаюсь научиться стрелять из этой проблемы. Следовательно, нужна ваша ценная помощь! Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...