Python:在第一个函数保持运行的同时运行第二个函数
我想在不等待第一个函数完成的情况下运行两个函数。我需要运行一个函数“ListeningToReceive”,使端口侦听以接收来自远程代理的数据,在侦听该端口时,它执行第二个函数“RunRemoteAgents”,以运行远程代理,使它们将数据发送到侦听端口。 我使用了线程,但它似乎不起作用,它只是使端口侦听,而不执行第二个函数Python:在第一个函数保持运行的同时运行第二个函数,python,multithreading,Python,Multithreading,我想在不等待第一个函数完成的情况下运行两个函数。我需要运行一个函数“ListeningToReceive”,使端口侦听以接收来自远程代理的数据,在侦听该端口时,它执行第二个函数“RunRemoteAgents”,以运行远程代理,使它们将数据发送到侦听端口。 我使用了线程,但它似乎不起作用,它只是使端口侦听,而不执行第二个函数 #!/usr/bin/python import threading def ListeningToReceive(): print "The port
#!/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
,它应该是代理
而不是代理
。你可以发布更多关于你的两个功能的详细信息吗?那么我们可以帮助你。你有任何这样的例子吗?你可以很容易地在网上找到服务器/客户端代码。使用两个进程发送和接收事件:)