Python
-
Python 문법 기초 37 - 멀티 채팅 서버 프로그램(socket + thread)Python 2022. 10. 23. 14:02
# 멀티 채팅 서버 프로그램 - socket + thread import socket import threading ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ss.bind(('127.0.0.1', 5000)) ss.listen(5) print('채팅 서버 서비스 시작...') users = [] def chatUser(conn): name = conn.recv(1024) data = '^^ ' + name.decode('utf-8') + '님 입장' print(data) try: for p in users: p.send(data.encode('utf-8')) while True: msg = conn.recv(1024) if not msg:conti..
-
Python 문법 기초 36 - 웹 크롤링(Crawling)과 웹 스크래핑(Scraping)의 차이점Python 2022. 10. 23. 13:58
웹 크롤링(Crawling)과 웹 스크래핑(Scraping)의 차이점 비개발자가 쉽게 설명하는 웹 크롤링(Crawling)과 웹 스크래핑(Scraping)의 차이점 여러 플랫폼들은 ‘웹 크롤링(Web Crawling)’과 ‘웹 스크래핑(Scrapint)’ 기술을 활용하여 인터넷의 수많은 데이터 속에서 고객이 원하는 정보만을 골라 보여줍니다. 비슷한듯 다른 크롤링과 스크 blog.codef.io 멀티 프로세싱으로 웹 스크래핑 # 멀티 프로세싱으로 웹 스크래핑 # https://beomi.github.io/beomi.github.io_old/ import requests from bs4 import BeautifulSoup as bs import time def get_links(): # a tag의 주소를..
-
Python 문법 기초 35 - 멀티 thread(병렬구조)Python 2022. 10. 23. 13:56
파이썬에서는 멀티 thread가 불가능하다 GIL의 정책에 어긋나기 때문이다. [Python] GIL (Global Interpreter Lock) 이해하기 이번 포스팅은 Python만의 특징 중 하나인 GIL(Global Interpreter Lock)의 개념에 대해 알아볼 것이다. Python 프로그래머라면 한 번쯤은 들어봤을 법한 용어지만, 정확하게 알고 있지 못한 분들도 많을 것 it-eldorado.tistory.com 파이썬은 병렬이 아닌 직렬 구조로서 병렬처럼 보이기 위해 눈속임을 하는 것 뿐이다. 완전한 병렬을 하기 위해서는 별도의 모듈을 받아야 한다. 병렬 구조(Pool, Process) # GIL 정책에 의해 완전한 스레드 구현은 불가하다. # 그래서 multiprocessing 모듈로..
-
Python 문법 기초 34 - thread(자원공유, 활성화/비활성화)Python 2022. 10. 23. 13:52
# process : 실행 중인 프로그램을 의미함. 자신만의 메모리를 확보하고 공유하지 않음. # thread : light weight process라고도 함. 하나의 process 내에는 한 개의 thread가 존재함 # process 내에 여러 개의 thread를 운영하여 여러개의 작업을 동시에 하는 것처럼 느끼게 할 수 있다. # multi thread로 multi tasking이 가능 # 데이터를 원할하게 송수신 하기 위해서는 thread를 사용하는 것이 좋다. import threading, time def run(id): for i in range(1,51): print('id:{} --> {}'.format(id, i)) time.sleep(0.2) # thread를 사용하지 않은 경우 #..
-
MariaDB 연동 예제Python 2022. 10. 22. 18:09
# MariaDB 연결정보를 객체로 저장 # 보이면 안되기 때문에 보이지 않게 별도의 파일에 보관해야 된다. config = { 'host':'127.0.0.1', 'user':'root', 'password':'설정한 비밀번호 입력', 'database':'test', 'port':3306, 'charset':'utf8', 'use_unicode':True } import pickle with open('mydb.dat', mode='wb') as obj: pickle.dump(config, obj) 연결 정보는 보안을 위해서 밖으로 빼 놔야 된다. 밑에 처럼 pickle을 import 해서 dac타입으로 파일을 생성 후 거기에 보관하는 법을 추천한다. # 키보드에서 부서번호를 입력받아 해당 부서 직원..
-
Python 문법 기초 33 - MyriaDB 연동(명령어)Python 2022. 10. 22. 18:08
MySql / Mariadb 연동하기(윈도우) * 윈도우에서 python용 MySql(MariaDB) 드라이버 설치 방법버전별 드라이버 다운로드 http://www.lfd.uci.edu/~gohlke/pythonlibs/사이트에서mysqlclient로 검색하여 원하는 파일(mysqlclient-1..-cp3*-cp3*m-win_amd64.whl)을 다 cafe.daum.net # 원격 데이터베이스 연동 프로그램 # pip install mysqlclient import MySQLdb conn = MySQLdb.connect(host = '127.0.0.1', user = 'root', password='123', database='test') print(conn) conn.close() # sangdat..
-
Python 문법 기초 32 - 개인용 DB : sqlite3Python 2022. 10. 22. 17:31
# 개인용 DB : sqlite3 : 파이썬 기본 개인용 데이터베이스 import sqlite3 print(sqlite3.sqlite_version) print() conn = sqlite3.connect('exem.db') try: cursor = conn.cursor() # SQL문 처리 # table 생성 SQL문은 ""를 사용하는 것이 좋다. cursor.execute("create table if not exists fritab(name text, phone text)") # 자료 추가 cursor.execute("insert into fritab(name,phone) values('한국인','111-1111')") cursor.execute("insert into fritab values('우..
-
Python 문법 기초 31 - file i/o (try ~ except) + pickle(import)Python 2022. 10. 22. 17:27
# file i/o import os print(os.getcwd()) try: print('읽기') # 읽기 # f1 = open(r'C:\work\psou\pro1\pack3/file_test.txt', mode = 'r', encoding = 'utf8') # f1 = open(os.getcwd() +'\\file_test.txt', mode = 'r', encoding = 'utf8') f1 = open('file_test.txt', mode = 'r', encoding = 'utf8') # mode = 'r', 'w', 'a', 'b' ... print(f1.read()) f1.close() print('저장') # 덮어쓰기 f2 = open('file_test2.txt', mode = 'w',..