如何在python中多次运行线程

乔纳森·戴维斯(Jonathan Davies)

我试图多次运行一个线程并不断出现错误:

RuntimeError: threads can only be started once

我尝试读取多线程并在我的代码中实现它,但没有任何运气。

这是我正在线程化的函数:

def receive(q):
    host = ""
    port = 13000
    buf = 1024
    addr = (host,port)
    Sock = socket(AF_INET, SOCK_DGRAM)
    Sock.bind(addr)
    (data, addr) = Sock.recvfrom(buf)
    q.put(data)

这是我要运行的代码:

q = Queue.Queue()
r = threading.Thread(target=receive, args=(q,))

while True:
    r.start()
    if q.get() == "stop":
        print "Stopped"
        break
    print "Running program"

stop被发送的消息,该方案应该跳出while循环,但它不会因为多线程运行。while循环应不断打印出Running program,直到stop发送消息为止

队列用于datareceive函数(即stop接收变量

埃里克

这是一个工作示例(适用于python 2.7)。

该程序具有两种操作模式:

  • 没有参数,它将运行接收循环
  • 带有参数的它发送一个数据报

注意在while循环外如何调用r.start()另外,有一个循环。r.terminate()clientreceivewhile True

import sys
import socket
from multiprocessing import Process, Queue

UDP_ADDR = ("", 13000)

def send(m):
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    sock.sendto(m, UDP_ADDR)

def receive(q):
    buf = 1024
    Sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    Sock.bind(UDP_ADDR)
    while True:
      (data, addr) = Sock.recvfrom(buf)
      q.put(data)

def client():
  q = Queue()
  r = Process(target = receive, args=(q,))
  r.start()

  print "client loop started"
  while True:
      m = q.get()
      print "got:", m
      if m == "stop":
          break
  print "loop ended"

  r.terminate()

if __name__ == '__main__':
  args = sys.argv
  if len(args) > 1:
    send(args[1])
  else:
    client()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在python中多次运行线程

来自分类Dev

如何在python中多次运行一个函数

来自分类Dev

如何在Python的线程中运行zeroRpc服务器?

来自分类Dev

如何在Python的线程中运行zeroRpc服务器?

来自分类Dev

如何在C中多次运行循环?

来自分类Dev

如何在Ruby中运行后台线程?

来自分类Dev

如何在UI线程中运行此类?

来自分类Dev

如何在多个线程中运行 webviews

来自分类Dev

多线程:如何在不同的线程中运行不同的功能?

来自分类Dev

如何在python中多次使用'if'循环?

来自分类Dev

如何在python中多次更新windowText?

来自分类Dev

在python中,子线程如何与运行GUI的父线程通信?

来自分类Dev

如何在python中运行多线程以进行多客户端套接字编程?

来自分类Dev

如何在运行方法(线程)(Python,Pyqt)中传递数据

来自分类Dev

如何在GDB中多次重新运行程序?

来自分类Dev

如何在testng的单个套件中多次运行测试类

来自分类Dev

如何在Parallel中多次运行性能跟踪?

来自分类Dev

我如何在grunt initConfig函数中多次运行任务

来自分类Dev

如何在GDB中多次重新运行程序?

来自分类Dev

如何在线程中运行的函数中设置超时

来自分类Dev

如何在Python中实现多线程?

来自分类Dev

如何在Python中同时启动线程

来自分类Dev

如何在python中停止线程变量

来自分类Dev

Python - 如何在构建线程步骤中不启动线程

来自分类Dev

Python 线程 - 如何在单独的线程中重复执行函数?

来自分类Dev

如何在不同的线程中同时运行多个QDialogs?

来自分类Dev

如何在Java中的Y线程上运行X任务?

来自分类Dev

如何在等待中杀死正在运行的线程?

来自分类Dev

如何在给定的MPI进程中运行多个线程?

Related 相关文章

热门标签

归档