首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从另一个Python进程打开另一个Python脚本

从另一个Python进程打开另一个Python脚本
EN

Stack Overflow用户
提问于 2015-09-10 18:31:34
回答 2查看 4.5K关注 0票数 0

我试图在一个单独的过程中从主python程序中打开python脚本。

现在,让我们简单地说,“主程序”是一个PyQt4图形用户界面程序,而“脚本”是我试图从我的主程序运行的脚本(在一个单独的文件中)。

为什么?

  1. 所以脚本在主程序关闭后继续运行。
  2. 这样,当脚本运行时,我的主程序就不会在等待无限循环结束的脚本时冻结。

我知道subprocess.Popen()subprocess.call()os.system()可以通过命令行打开文件,但是当它们打开一个具有无限循环的脚本时,主程序就会挂起并崩溃。

我也知道我可以使用QtCore.QCoreApplication.processEvents()来保持主程序运行,但这在我的情况下是行不通的。

因此,我认为保持脚本和主程序正确运行的最佳解决方案是有单独的进程。

如何以一种不会冻结我的程序的方式在单独的进程中打开script.py文件

EN

回答 2

Stack Overflow用户

发布于 2015-09-10 22:07:33

在Python中调用外部命令可能就是你要找的东西。作者完美地描述了如何启动不同的python脚本,在主程序关闭时继续运行。

票数 1
EN

Stack Overflow用户

发布于 2016-05-11 14:56:27

不要将python脚本作为子进程运行,而是导入相应的模块并调用所需的函数。如果需要在单独的进程中运行Python代码,可以使用multiprocessing

代码语言:javascript
复制
multiprocessing.Process(target=infinite_loop, args=['arg 1', 2]).start()

相关:在python脚本中使用子进程调用具有输入的python脚本.

为了避免“冻结”GUI,不要在GUI线程中调用长时间阻塞的函数。要么使用线程,要么使用异步。API (这里是调用,在不阻塞GUI的情况下从子进程读取输出)。

Popen()只启动子进程,而不等待退出。如果Popen()“冻结”了你的程序,其他的东西就坏了。这是在子进程的开始/结束时启动/停止tkinter进度条的代码示例。

Qt有自己的API: QThread,QProcess,可以用来运行子进程的信号。相关:如何在子进程期间和之后进行操作.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32509261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档