簡體   English   中英

Python 多處理什么也不做

[英]Python multiprocessing does nothing

從 Visual Studio > Python 控制台應用程序運行...操作系統是 Windows 10。

下面的簡單代碼不起作用。 window 會停留幾秒鍾,然后關閉,不會在 window 上打印任何內容。

請幫我解決這個問題。 這一直令人困惑,當我從 Internet 上看到很多人報告了這一點時,如果您提供可以在我的環境中工作的解決方案,我真的很感激。 謝謝。

import multiprocessing
import sys
import os

def foo():
    print('hello')

if __name__ == '__main__':
    multiprocessing.freeze_support()
    multiprocessing.set_executable(os.path.join(sys.exec_prefix, 'pythonw.exe'))

    p = multiprocessing.Process(target=foo)
    p.start()

pythonw.exe是 GUI window,而不是控制台。 您希望在哪里看到您打印的“你好”? 如果您想確保另一個進程中的代碼實際運行,請將“hello”寫入某個文件,或打開 window:

from tkinter import Tk

def foo():
    print('hello')
    t = Tk()
    t.mainloop()

或者

from pathlib import Path

def foo():
    Path("some_file.txt").write_text("hello")

最后還要調用p.join()以等待該過程完成。

是否有使用“set_executable”function 的理由? 嘗試查看sys.executable的值與您要使用的解釋器不同嗎? 如果是這樣,您要使用的可執行文件的路徑是什么?

嘗試使用以下命令python <path_to_script.py>cmd中運行它

import multiprocessing
import sys
import os

def foo():
    print('hello')

if __name__ == '__main__':
    #multiprocessing.freeze_support()
    #multiprocessing.set_executable(os.path.join(sys.exec_prefix, 'pythonw.exe'))

    p = multiprocessing.Process(target=foo)
    p.start()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM