栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 多进程多线程含socket unix

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 多进程多线程含socket unix

这里写自定义目录标题

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/741604.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号