<p>根据您对另一个回复的评论:</p>
<blockquote>
<p>Sorry for the ambiguity, I was talking about QtThread Slot/Signal
Mechanism vs. callbacks using inbuilt Python Threads. I intend on
creating separate threads from UI on event arrival (clicks, etc) and
then use callbacks to the main UI thread from the new threads to
update the UI (all UI logic in the main thread with locks to keep it
thread safe.) I know this might mean replicating some of the already
present PyQt functionality but I feel this way I would have a lot more
control over my app. (The extra work isn't a concern if it allows more
flexibility in the app. Plus it isn't so much of work)</p>
</blockquote>
<p>我想说的是,你想要的是从你的线程中使用<code>QApplication.postEvent()</code>。通过一些额外的代码,您可以使用它在主线程中以同步或异步方式执行任意方法。在</p>
<p>我不确定这两个选项(Qt或Python线程)是否真的有任何优缺点。据我所知,他们都仍然持有GIL,这意味着你的程序从来没有真正的多线程。<code>QThread</code>附带了一个事件循环,但正如您所说,在自己的Python线程中编写自己的代码并不难。在</p>
<p>您是否考虑过使用多个进程而不是多个线程?虽然启动速度较慢,但实际上可以让代码并行运行。在</p>
<p>归根结底,我认为你的问题的答案只是个人喜好。我的建议是避免使用<code>QThread</code>,因为如果PyQt\PySide\Qt死了,将来将应用程序移植到另一个widget工具箱会更容易(虽然可能性不大,但我对PyGTK有过不好的体验,所以现在我很谨慎)</p>
<p>编辑:请再看看这个,因为它有比我给出的更好的答案:<a href="https://stackoverflow.com/questions/1595649/threading-in-a-pyqt-application-use-qt-threads-or-python-threads">Threading in a PyQt application: Use Qt threads or Python threads?</a></p>