Python 多进程多线程含简单域套接字通讯

这里写自定义目录标题

变量名什么的不要在意,谢谢。
有一个问题,子进程中的线程为啥要再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(域套接字)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柚稚酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值