2018-08-08day-18
python에 내장된threading 모듈로 다중 루틴 지원
모든 프로세스는 기본적으로 하나의 루틴이 있습니다. (일반적으로 이 루틴을 주 루틴이라고 합니다.) 다른 루틴은 하위 루틴이라고 합니다. 프로세스에 다른 루틴을 추가하려면 루틴 대상을 만듭니다.
import threading
import time
def download(file, time1):
print(' ',file)
time.sleep(time1)
print(file, ' ')
if __name__ == '__main__':
print('abc')
# 1.
"""
target:
args: ( )
:
"""
t1 = threading.Thread(target=download, args=[' ', 10])
# 2.
t1.start()
t2 = threading.Thread(target=download, args=[' ', 5])
t2.start()
# download(' ')
# download(' ')
print('=====')
# t3 = threading.Thread(target=input, args=['>>>'])
# t3.start()
value = input('>>>')
print('!!!!')
2. 멀티스레드 기술2
방식2: 자신의 라인 클래스를 쓴다.클래스를 쓰고 Thread 클래스를 계승합니다.런을 다시 쓰는 방법, 하위 라인에서 수행해야 할 임무를 정합니다.하위 라인에서 실행되는 작업에 대응하는 기능을 실현하고 파라미터가 필요하면 클래스의 대상 속성을 통해 값을 전달합니다
from threading import Thread
import requests
import re
#
class DownloadThread(Thread):
""" """
def __init__(self, file_path):
super().__init__()
self.file_path = file_path
def run(self):
"""run """
"""
1.
2.
"""
print(' ')
response = requests.request('GET', self.file_path)
data = response.content
#
suffix = re.search(r'\.\w+$', self.file_path).group()
with open('./abc'+suffix, 'wb') as f:
f.write(data)
print(' ...')
if __name__ == '__main__':
print('=====')
t1 = DownloadThread('http://10.7.181.117/shareX/Git.exe')
# start run ,run
t1.start()
# run ,run
# t1.run()
t2 = DownloadThread('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1533720058151&di=766b5c97653351e805c85881ecaa57d0&imgtype=0&src=http%3A%2F%2Fx.itunes123.com%2Fuploadfiles%2Fb2ab55461e6dc7a82895c7425fc89017.jpg')
t2.start()
print('!!!!!')
3. 멀티스레드 어플리케이션
하나의 서버를 구축하여 여러 개의 클라이언트 정보를 수신하는 것을 실현하다
import socket
from threading import Thread
class CoversationThread(Thread):
""" """
"""
python ,
"""
def __init__(self, conversation:socket.socket, address):
super().__init__()
self.conversation = conversation
self.address = address
def run(self):
while True:
self.conversation.send(' !'.encode())
print(self.address,self.conversation.recv(1024).decode(encoding='utf-8'))
if __name__ == '__main__':
server = socket.socket()
server.bind(('10.7.181.99', 8080))
server.listen(512)
while True:
conversation, address = server.accept()
t = CoversationThread(conversation, address)
t.start()
다음은 클라이언트
import socket
client=socket.socket()
client.connect(('10.7.181.99',8001))
while True:
data=client.recv(1024)
print(data.decode(encoding='utf-8'))
x=input('>>>')
client.send(x.encode())
4.join 함수
from threading import Thread,currentThread
import time
from random import randint
class Download(Thread):
def __init__(self, file):
# init ,
super().__init__()
self.file = file
def run(self):
print(currentThread())
print(' :%s' % self.file)
time.sleep(randint(5, 10))
print('%s ' % self.file)
if __name__ == '__main__':
# time.time(): -
start_time = time.time()
t1 = Download(' Z.mp4')
t1.start()
t2 = Download(' A.mp4')
t2.start()
print('====')
#
"""
: MainThread
: Thread- ( 1 。)
"""
print(currentThread())
# , join
# join ,
t1.join()
# t2.join()
end_time = time.time()
print(' :%.2f' % (end_time - start_time))
작업 시간 소모
1. 운영 스레드에 시간 소모 작업: 운영 스레드에 시간 소모 작업을 넣으면 여러 개의 시간 소모 작업이 한 스레드에 실행되는 것을 막는다. 최종 실행 시간은 두 개의 시간 소모 작업의 시간과
2. 문제를 어떻게 해결합니까?다중 스레드 사용(다중 스레드 생성)
import pygame
from random import randint
import time
def rand_color():
return randint(0, 255),randint(0, 255),randint(0, 255)
def long_time():
print(' ')
time.sleep(10)
print(' ')
def download(file):
print(' ',file)
time.sleep(10)
print(file, ' ')
if __name__ == '__main__':
print('====')
print(time.time())
download(' ')
download(' ')
print(time.time())
print('!!!')
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.