此线程上没有运行任何事件循环

时间:2018-12-19 12:01:44

标签: pyqt qthread

我正在创建一个新线程来将UI界面与数据处理逻辑分开。但是由于我完全无法理解的原因,当我构建并运行我的应用程序时,该应用程序会迅速崩溃,并出现以下异常:

var request = require('request').defaults({ encoding: null });

我不确定构建系统中的什么会导致此运行时错误,这是我的代码,我的最佳猜测是某种神秘的链接怪癖,但我不知道如何解决该问题。

 File "capnp/lib/capnp.pyx", line 2150, in capnp.lib.capnp._DynamicCapabilityClient._send
capnp.lib.capnp.KjException: src/kj/async.c++:53: failed: expected loop != nullptr; No event loop is running on this thread.
stack: 0x7f9bd4774489 0x7f9bd477845d 0x7f9bd4c0aacc 0x7f9bd49a81cb 0x7f9bd49a8207 0x7f9bd49a8304 0x7f9bd54d0341 0x7f9bd4edb93e 0x7f9bd4edba96 0x7f9bd4ec305e 0x7f9bd4ec43e9 0x7f9bd4eb0651 0x7f9bd54b5ad8 0x7f9bd5485844 0x55b92dc620c5 0x55b92dd55107

欢迎提供任何有关如何解决此问题的建议。

1 个答案:

答案 0 :(得分:0)

我不知道cnc是什么,但是我猜测它使用Cap'n Proto RPC。 Cap'n Proto RPC使用单线程事件循环并发模型,因此最初在一个线程上创建的RPC对象无法在另一个线程上进行操作。

在您的程序中,您正在启动时在主线程中创建cnc对象。然后,您创建一个新线程并尝试从那里访问该对象。这行不通。您需要在单个线程上构造和使用该对象。