python multiprocessing 和tcp

#用類方法  服務端

from socket import *
from multiprocessing import Process
import os


class Myprocess(Process):
def __init__(self, conn):
self.conn = conn
super().__init__()

def run(self):
conn = self.conn
start = True
while start:
try:
print('啟動子線程:%s' % os.getpid(), end='')
data = conn.recv(1024)

conn.send(data)
print('線程編號:%s,data=%s' % (os.getpid(), data.decode('utf-8')))
except Exception as e:
conn.close()
start = False
print('關閉了')
conn.close()


if __name__ == '__main__':
# p=Myprocess('這是測試文件')
# p.start()

st = socket(AF_INET, SOCK_STREAM)
host = '127.0.0.1'
port = 8080
listen_number = 5
st.bind((host, port))
st.listen(listen_number)
transcript = None
while True:
print('等待連接')
conn, _ = st.accept()
if conn != transcript:
transcript = conn
p = Myprocess(conn)
p.start()
print('連接成功')
else:
print('不知道:%s' % conn)

st.close()


#用函數方法 服務端


from multiprocessing import Process
from socket import *
import json, struct

import os


def process_communication(conn):
while True:
try:
print('啟動子線程:%s' % os.getpid(), end='')
data = conn.recv(1024)
conn.send(data)
print('線程編號:%s,data=%s' % (os.getpid(), data.decode('utf-8')))
except Exception:
conn.close()
print('關閉了')
break


if __name__ == '__main__':

st = socket(AF_INET, SOCK_STREAM)
host = '127.0.0.1'
port = 8080
listen_number = 5
st.bind((host, port))
st.listen(listen_number)
transcript = None
while True:
print('等待連接')
conn, _ = st.accept()
if conn != transcript:
transcript = conn
p = Process(target=process_communication, args=(conn,))
p.start()
#p.join()
print('連接成功')
else:
print('不知道:%s' % conn)

st.close()


#客戶端
from socket import *

st = socket(AF_INET, SOCK_STREAM)
host = '127.0.0.1'
port = 8080
st.connect((host, port))
while True:

msg = input('請輸入:').strip()
if not len(msg):
continue

st.send(msg.encode(encoding = 'utf-8'))
data=st.recv(1024)
print(data.decode(encoding='utf-8'))

st.close()




(現代操作系統)書 egon老師推薦


開啟線程方式一:
import multiprocessing
from multiprocesssing import Process



def task(name):
print('%s is runings'%name)
time.sleep(3)
print('%s is done'%name)
group#保留參數 無用
target#任務名




#如果只有一個參數一定記住加 逗號(,)
#Process(target=task,kwargs={'name':'子進程'})

if __name__=='__main__':
p=Process(target=task,args=('子進程',))
p.start()#windows系統倒模塊的方式,把父進程加載進去
#linux 其實不用放入main下面的,
#但是為了兼容liunx和windows系統 所以全部加吧
#可以自定義函數名

#主進程會等待子進程結束后才會結束


p.start()#只是在操作系統發送一個開啟子進程的信號
#p.start只是發送信號(這步速度非常快)
#申請內存空間,開辟個名稱空間,在將父進程的數據復制一份到這個內存空間中
#至于開啟的時間,開啟的方式都是操作系統說的算





class Myprocess(Process):
def __init__(self,x):
super().__init__()
self.name=x
def run(self):
self.name#進程名稱


if __name__=='__main__':
p=Myprocess('測試')
p.start()#等同于p.run()#自定義類必須實現run()方法



import time
x='tiankong'
def task():
global x
x=0
print('done')
print(x)


if __name__ == '__main__':
p=Process(target=task)
p.start()
time.sleep(5)#讓父進程等待5秒,讓子進程運行完閉后,才執行下一行代碼
print(x) #但是子進程不一定5秒就能運行完。、


#進程間內存隔離





from multiprocessing import  Process
import time,os
def task(name,n):
print('name is :%s'%name)
time.sleep(3)
print('子進程pid%s'%os.getpid())
print(n)
print('end')


if __name__ == '__main__':
p=Process(target=task,args=('子進程',('這里可以給子進程傳參')))
p.start()
p.pid#父進程查看 子進程的pid方式

p.join()#讓父進程在原地等待,等到子進程運行完畢后,才執行下一行代碼
#本質和time.sleep()一樣但是等待時間不用手動輸入了
print('主進程')



def walk():
print('walk:%s'%os.getpid())
time.sleep(12)

if __name__ == '__main__':
p=Process(target=walk)
p.start()
p.is_alive()#只要信號發出,就認為這個子線程是活著
print('父進程:%s'%os.getpid())
p.join()#自動回收僵尸進程
       #讓父進程進入等待狀態
p.terminate()#給操作系統發送信號,殺死這個子進程


#殺死進程taskkill /F /PID 進程號
#liunx 中孤兒進程 父進程會變成 init




轉載于:https://www.cnblogs.com/yanxiatingyu/p/9295187.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397539.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397539.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397539.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab 畫三維花瓶,精美花瓶建模教程

1、首先,草圖單位為mm,進入前視圖繪制如圖草圖,花瓶的基本形狀輪廓2、然后對草圖進行旋轉3、旋轉出曲面后,在頂部邊線新建一個基準面4、繼續在前視圖繪制草圖,如圖繪制一弧線5、然后進行旋轉6、可以得到圖示的兩個曲面…

PKI系統相關知識點介紹

公鑰基礎設施(Public Key Infrastructure,簡稱PKI)是目前網絡安全建設的基礎與核心,是電子商務安全實施的基本保障,因此,對PKI技術的研究和開發成為目前信息安全領域的熱點。本文對PKI技術進行了全面的分析…

android 打印java堆棧,Android打印堆棧

java打印堆棧方法一:異常對象打印堆棧Exception e new Exception("this is a log");e.printStackTrace();方法二:Log打印獲取異常的堆棧并打印Log.e(“dump_test”,Log.getStackTraceString(new Throwable()));C\C打印堆棧方法一:…

實際算法項目工程上手日志C/C++

#pragma once 為了保證頭文件只被編譯一次,通常放在頭文件的頂部 #define IN #define OUT #define INOUT 這個只在邏輯上起作用, IN 表示輸入參數,指針指向的值不會修改; OUT 表示輸出參數,指針指向的值會修改&a…

Arduino 控制超聲波測距模塊

一.實物圖 二.例子代碼 用到數字2 和3 引腳,還有兩個就是vcc GND兩個陰腳,用模塊連線比較簡單 轉載于:https://www.cnblogs.com/caoguo/p/4785700.html

Linux安裝source-code-pro字體

2019獨角獸企業重金招聘Python工程師標準>>> 1.下載source-code-pro字體 從GitHub下載 https://github.com/adobe-fonts/source-code-pro/releases 2.解壓文件,將OTF格式的文件夾重新命名一下,這里我命名為source-code-pro,然后將…

dft對稱性 matlab實驗,數字信號處理實驗指導書(審)

(0???2?)上對X(ej?)均勻采樣得到?X(k)?X(ej?)??2?k/N??n???x(n)e?j2?kn/N 0?k?N?1可以看到X(k)也是頻域上的有限長序列,長度為N。序列X(k)稱為序列x(n)的N點DFT。N稱為DFT變換區間長度。 通常表示WN?e?j2?/N可將定義式表示為?X(k)??x(n)…

PI

并不是所有東西都可以套PI的,只有滿足上述這類的數學關系才可以。 轉速經過PI調節得到電流也是有原因的。從下圖中可以發現,轉速 k*Iq/s,s是拉普拉斯算子,所以也是滿足積分,比例關系的。 轉載于:https://www.cnblogs.…

AOP之AspectJ簡單使用

為什么80%的碼農都做不了架構師?>>> 參考文章: 使用AspectJ在Android中實現Aop 深入理解Android之AOP自動打印日志主要知識點: 主要是JPoint、pointcuts、advice以及他們之間的關系可以通過aj文件、或AspectJ注解的Java文件實現A…

matlab drawnow連成曲線,precision recall曲線Matlab實現

在用哈希進行檢索時,常會用到precision recall曲線對其性能進行定量評價。precision recall的定義在信息檢索評價指標中已做了詳細說明,這里再記錄一下precision recall的具體實現。precision recall曲線matlab一般使用的都是下面的版本:func…

trap

http://blog.csdn.net/elbort/article/details/8525599 http://mywiki.wooledge.org/SignalTrap轉載于:https://www.cnblogs.com/flowjacky/p/4785723.html

WinSCP實現Ubuntu與 Windows 文件共享方法

2019獨角獸企業重金招聘Python工程師標準>>> WinSCP是一個Windows環境下使用SSH的開源圖形化SFTP客戶端。同時支持SCP協議。它的主要功能就是在本地與遠程計算機間安全的復制文件。WinSCP綠色中文版 一款基于SSH安全高效的FTP上傳軟件。WinSCP 可以執行所有基本的文…

緩存機制

緩存 緩存就是數據交換的緩沖區(稱作Cache) 客戶端:緩存(expires)、deflate壓縮 緩存服務器:CDN/cache緩存靜態內容如:html、jpg、gif、js等 靜態web服務器:Apache/nginx靜態服務器提…

Shell學習總結

Shell 是什么? Shell 是一個用C語言編寫的程序,它是用戶使用Linux的橋梁。Shell既是一種命令語言,又是一種程序設計語言。 Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統內核的服務…

java有幾個關鍵字,Java多線程常用的幾個關鍵字

Java多線程常用的幾個關鍵字二、volatile作用:volatile關鍵字的作用是:使變量在多個線程間可見(具有可見性),但是僅靠volatile是不能保證線程的安全性,volatile關鍵字不具備synchronized關鍵字的原子性。Demo1:package com.ietree…

PHP獲取QQ等級,php仿QQ等級太陽顯示函數

開頭先引述下QQ等級的算法:設當前等級為N,達到當前等級最少需要的活躍天數為D,當前活躍天數為Dc,升級剩余天數為Dr,則:從而推出:好了,引述完成,懶得寫字了,貼出代碼&…

Bugfree實用心得_轉

轉自:http://blog.csdn.net/benkaoya/article/details/8719257 本博下有許多實用技巧 1. 什么是問題跟蹤系統 問題跟蹤系統(Issue Tracking System)是專門用于記錄、跟蹤和管理各類問題的軟件。 問題跟蹤系統出現于上世紀80年代,…

【qxbt day1】 P2367 語文成績

今天學了 差分********* 很明白 然后 配合著luogu上的題寫一下吧 裸的差分 當時一直打暴力60分 交了十幾次 今天才知道 查詢修改什么的是差分 直接看題把 輸入輸出格式輸入格式: 第一行有兩個整數n,p,代表學生數與增加分數的次…

python會什么比c慢

眾所周知,python執行速度比c慢。原因為何? 先來看下面這張圖: python的傳統運行執行模式:錄入的源代碼轉換為字節碼,之后字節碼在python虛擬機中運行。代碼自動被編譯,之后再解釋成機器碼在CPU中執行。 補充…

多維動歸第一題

https://www.luogu.org/problemnew/show/P1508 好了這題就是較為簡單的坐標類DP(感覺),總之是一個二維的區域,需要一步一步地向可前進方向dp,而倒退過來,就是每一個地方取之前的地方里最多的一個進行選擇&a…