变量名什么的不要在意,谢谢。
有一个问题,子进程中的线程为啥要再import socket一次,不加就运行不起来?哪位知道解答一下呗^^
from multiprocessing import Process
import socket
import os
import time
import threading
def start():
i=0
mainT=threading.Thread(target=udpUS,args=('main','recv'))
mainT.start()
while i<2:
pname='p'+str(i)
processadd(pname)
i=i+1
def processadd(name):
p=Process(target=pcode,args=(name,'send'))
p.start()
def pcode(name,role):
pT=threading.Thread(target=udpUS,args=(name,role))
pT.start()
#进程执行的其他代码咯
def udpUS(sign,role):
udppath='/tmp/'+sign+'_sock.sock'
print(sign)
import socket#莫名其妙,非要我再import一次socket
sock=socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
#sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)#抄的
if os.path.exists(udppath):
os.unlink(udppath)
sock.bind(udppath)
if role=='send':
data=('I`m '+sign+' connect!').encode('utf-8')
sock.sendto(data,0,'/tmp/main_sock.sock')
if role=='recv':
while True:
data=sock.recv(100)
print(data)
time.sleep(5)
print(sign+' over!')
if __name__=='__main__':
start()
参考了:
Python基于unix socket的并发技巧
Python_unix domain socket(域套接字)