亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多處理從代碼開頭重新啟動,而不是運行特定函數

多處理從代碼開頭重新啟動,而不是運行特定函數

翻過高山走不出你 2023-09-12 17:38:24
該代碼應該complex_calculation()在新進程上運行。但是當我執行代碼時,一旦單線程完成,它就會重新啟動整個程序,并且我必須再次輸入輸入(這意味著它從代碼的開頭重新啟動,而不是只運行指定的函數)。我看的教程沒有這個問題。當作者運行時,它不會像我得到的那樣提示輸入兩次。使用 ProcessPoolExecutor 時也存在此問題。Pycharm版本:2020.2 Python版本:3.8這是代碼:import timefrom multiprocessing import Processdef ask_user():    start = time.time()    user_input = input('Enter your name: ')    greet = f'Hello, {user_input}'    print(greet)    print(f'ask_user, {time.time() - start}')def complex_calculation():    start = time.time()    print('Started calculating..')    [x**2 for x in range(20000000)]    print(f'complex_calculation, {time.time() - start}')start = time.time()ask_user()complex_calculation()print(f'Single thread total time: {time.time() - start}')# Start a new process to run complex_calculation functionprocess = Process(target=complex_calculation)process.start()start = time.time()process.join()print(f'Two process total time: {time.time() - start}')
查看完整描述

1 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

您應該將代碼更改為如下所示:


if __name__ == "__main__":

? ? start = time.time()

? ? ask_user()

? ? complex_calculation()

? ? ...? ??

根據文檔,使用if __name__ == __main__:是必要的。

查看完整回答
反對 回復 2023-09-12
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號