Python:在第一个函数保持运行的同时运行第二个函数

Python:在第一个函数保持运行的同时运行第二个函数,python,multithreading,Python,Multithreading,我想在不等待第一个函数完成的情况下运行两个函数。我需要运行一个函数“ListeningToReceive”,使端口侦听以接收来自远程代理的数据,在侦听该端口时,它执行第二个函数“RunRemoteAgents”,以运行远程代理,使它们将数据发送到侦听端口。 我使用了线程,但它似乎不起作用,它只是使端口侦听,而不执行第二个函数 #!/usr/bin/python import threading def ListeningToReceive(): print "The port

我想在不等待第一个函数完成的情况下运行两个函数。我需要运行一个函数“ListeningToReceive”,使端口侦听以接收来自远程代理的数据,在侦听该端口时,它执行第二个函数“RunRemoteAgents”,以运行远程代理,使它们将数据发送到侦听端口。 我使用了线程,但它似乎不起作用,它只是使端口侦听,而不执行第二个函数

#!/usr/bin/python
import threading

def ListeningToReceive():
        print "The port is open to receive data"
def RunRemoteAgensts():
        print "Running remote agents to send Data to the open port here"
if __name__ == "__main__":
        thread1 = threading.Thread(target=ListeningToReceive)
        thread2 = threading.Thread(target=RunRemoteAgents)
        thread1.start()
        thread2.start()
CPython实现细节:在CPython中,由于全局解释器锁,一次只能有一个线程执行Python代码(即使某些面向性能的库可能会克服此限制)。如果您希望应用程序更好地利用多核计算机的计算资源,建议您使用多处理。但是,如果您希望同时运行多个I/O绑定任务,线程仍然是合适的模型

改用多处理:

from multiprocessing import Process
import time

def f(name):
    print 'hello', name
    time.sleep(10)
    print "f is done"

def f2():
    print "this is funct2"
if __name__ == '__main__':
    p1 = Process(target=f, args=('bob',))
    p2 = Process(target=f2, args=())

    processes = list()
    processes.append(p1)
    processes.append(p2)

    for p in processes:
        p.start()

使用
多处理
我可以用多处理运行不同的函数吗?您的第二个函数有一个输入错误
RunRemoteAgensts
,它应该是
代理
而不是
代理
。你可以发布更多关于你的两个功能的详细信息吗?那么我们可以帮助你。你有任何这样的例子吗?你可以很容易地在网上找到服务器/客户端代码。使用两个进程发送和接收事件:)