从另一个线程调用函数?

时间:2018-11-27 02:53:28

标签: python multithreading

我有一个带有2个线程的脚本,下面显示了一个基本示例:

Thread 1:
    value = stuff()
    if value > 0:
        # Code to make something() run

Thread 2:
    def something():
        # Thread specific task goes here

我需要在线程2中而不是线程1中运行something(),我知道如何与Queue“同步”变量,而且我知道我可以在线程2中放入一个循环,等待条件,然后执行某些事情( ),但这会破坏线程2中的其他内容。

对不起,如果我不清楚,很难解释。谢谢。

1 个答案:

答案 0 :(得分:0)

线程2需要有一个用于延迟应用程序的队列,然后线程1可以简单地将其调用添加到此队列中。

队列的内容可以是该函数以及用于调用该函数的args和kwargs的名称或引用。

最后,如果您异步地在promise发生事件的地方等待,最终将使用活动对象模式和promise模式。如果您同步等待,则很可能会锁定被调用线程,然后传递消息,然后阻止该事件,然后被调用线程将设置该事件,然后您将取消阻止并读取结果。