2014-10-16 64 views
0

我正在研究一个将性能作为高优先级的大项目。我有一些使用wxPython为软件创建窗口和对话框的经验,但我没有在单个程序的过程中让进程并行工作的经验。在wxPython中有互通异步进程

所以基本上,我想要做到的是以下几点:

我想控制的高级程序一个主类。它从配置文件或用户输入设置配置。我自己完成了很多。

我需要PROCESS#1来读取文件和命令列表,然后执行这些命令,然后将修改后的文件传递给PROCESS#2(这要求PROCESS#2已准备好接受新输入)。该文件被传递,进程#1将开始对下一组输入进行处理并等待进程#2在循环重复之前完成。

PROCESS#2从PROCESS#1获取输入并将输出写入日志文件。输出完成后,它将等待PROCESS#1的下一组输出。

我知道如何使用与此有关wxTimers和事件,但我已经发现的是,如果该程序以其他方式占有一个计时器事件将不会执行(在方法的中间等。)

我已经看到关于“线程”和“池”的线索,但术语往往会超出我的头脑,而我还没有得到任何这种东西的工作。

如果有人能指出我正确的方向,我会非常感激。

+0

也许这有助于:http://wiki.wxpython.org/LongRunningTasks – Werner 2014-10-16 15:21:23

+0

好吧,让我看看我是否可以正确解释这一点。从链接的第一个例子中,这个人创建了他自己的Event对象。当然,这似乎是比我尝试使用线程技术更可行的解决方案。线程。我将尝试以相同的方式创建事件,并在PROCESS#1和PROCESS#2启动和停止时使用它们来触发。谢谢! – jdrobers 2014-10-16 16:27:45

回答

0

如果你使用线程,那么我认为这将是相当容易做到的。这是我会建议的:

创建一个按钮(或其他小部件)来执行线程中的进程#1。线程本身将运行两个进程。下面是一些伪代码,这可能有助于:

# this is in your thread code: 
result = self.call_process_1(args) 
self.call_process_2(result) 

这将允许你启动另一个进程#1/2每次按下按钮时,一个新的命令集。由于这两个进程都封装在线程中,所以他们不必等待进程#2完成。您可能需要登录才能将日志的日志分开,但可以使用时间戳和线程号或uuid标记日志。

根据您需要执行的进程数量,您可能需要考虑设置由芹菜或其他驱动的集群。但我认为这是一个很好的起点。