Python子进程Popen通过线程进行通信

Python子进程Popen通过线程进行通信,python,subprocess,python-multithreading,Python,Subprocess,Python Multithreading,使用子流程模块运行命令,并与方法通信以将stdin输入传递给命令。在独立运行时,而不是作为线程运行时,此功能可以正常工作: cmd = ["/usr/bin/nc", "-w0", "-u", hostname, port] while count <= interval: j = 0 while j < burst: p1 = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subproces

使用子流程模块运行命令,并与方法通信以将stdin输入传递给命令。在独立运行时,而不是作为线程运行时,此功能可以正常工作:

cmd = ["/usr/bin/nc", "-w0", "-u", hostname, port]

while count <= interval:
    j = 0
    while j < burst:
        p1 = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE).communicate(json.dumps(data))
        time.sleep(0.01)
        j = j + 1
    count = count+1
    time.sleep(1)

1.使用
线程
模块而不是
线程
。2.您是否可以创建一个显示您的问题并发布其产生的完整回溯?您可以使用
socket
模块,而不是运行
nc
。将stderr=subprocess.PIPE添加到混合中。@J.F.Sebastian我尝试了
线程化
。根据你的建议,我最终使用了
socket
。thanks@tdelaney将stderr添加到
Popen
不会改变行为。在通信调用中仍然收到相同的错误。
import thread
t = thread.start_new_thread( senddata, (mac, interval)