如何在 Windows 上的 python 中启动一个进程?
Posted
技术标签:
【中文标题】如何在 Windows 上的 python 中启动一个进程?【英文标题】:how to start a process in python on windows? 【发布时间】:2021-11-27 13:35:55 【问题描述】:我正在尝试使用python documentation 中的multiprocessing.Process
示例启动一个进程。
示例代码如下:
from multiprocessing import Process
import os
def info(title):
print(title)
print('module name:', __name__)
print('parent process:', os.getppid())
print('process id:', os.getpid())
def f(name):
info('function f')
print('hello', name)
if __name__ == '__main__':
info('main line')
p = Process(target=f, args=('bob',))
p.start()
p.join()
我希望控制台向我显示函数 f('bob')
的输出,但我只能看到 info('mainline')
的输出。
所以我认为这个过程甚至还没有开始??
我以前从未使用过多处理,我敢打赌这是我犯的一个愚蠢的错误。
我也尝试过设置启动方法multiprocessing.set_start_method('spawn')
(见here),因为'spawn'
似乎是windows唯一有效的方法。
但我只得到一个
RuntimeError: context has already been set
目前我认为,我无法启动该过程。
任何想法如何解决这个问题?
附:我正在使用 spyder 4.2.5 中的 Windows 10(也许这与 ipython 控制台有关?因为我听说过,这不是普通的 python 控制台)。
但是我在普通的python shell中也试过同样的例子,它也只显示了info('mainline')
的输出。
【问题讨论】:
不是您问题的真正答案,但如果使用多处理,则可能值得使用标准控制台来运行 Python。几年前我会使用 IDLE,但我认为它并不特别喜欢线程/进程。 可能重复***.com/questions/1196074/… 您的代码使用标准 CPython 解释器 (v 3.8.9) 在 Windows10 上为我工作。 @Peter:是的,你是对的,当我从 cmd 运行脚本时,它可以工作。所以我想这真的是 spyder/ipython 的东西。感谢您的提示! :) 【参考方案1】:已解决:通过从 cmd 运行脚本
【讨论】:
以上是关于如何在 Windows 上的 python 中启动一个进程?的主要内容,如果未能解决你的问题,请参考以下文章
Windows 上的 Python 2.6:如何使用“shell=True”参数终止 subprocess.Popen?
在 Windows 上的 CygWin 下调用 python 挂起
如何使用 python 脚本打开 Windows 10 应用程序?
PC 上的双启动 Windows-Android:如何以编程方式切换操作系统?