병행성 (Concurrency) : 한 컴퓨터가 여러 일을 동시에 수행 -> 단일 프로그램 안에서 여러 일을 쉽게 해결
병렬성 (Parallelism) : 여러 컴퓨터가 여러 작업을 동시에 수행 -> 속도
Generator Ex
def generator_ex1():
print('Start')
yield 'A Point'
print('Continue')
yield 'B Point'
print('End')
temp = iter(generator_ex1())
# print(temp)
# print(next(temp))
# print(next(temp))
# print(next(temp))
for v in generator_ex1():
pass
# print(v)
# Generator Ex2
temp2 = [x * 3 for x in generator_ex1()]
temp3 = (x * 3 for x in generator_ex1())
# print(temp2)
# print(temp3)
for i in temp2:
print(i)
for i in temp3:
print(i)
itertools 주요 함수
import itertools
gen1 = itertools.count(1, 2.5)
print(next(gen1))
print(next(gen1))
print(next(gen1))
print(next(gen1))
# ... 무한
# 조건
gen2 = itertools.takewhile(lambda n : n < 1000, itertools.count(1, 2.5))
for v in gen2:
pass
# print(v)
# 필터 반대
gen3 = itertools.filterfalse(lambda n : n < 3, [1, 2, 3, 4, 5])
for v in gen3:
print(v)
# 누적 합계
gen4 = itertools.accumulate([x for x in range(1, 101)])
for v in gen4:
print(v)
# 연결
gen5 = itertools.chain('ABCDE', range(1, 11, 2))
print(list(gen5))
# 연결2
gen6 = itertools.chain(enumerate('ABCDE'))
print(list(gen6))
# 개별
gen7 = itertools.product('ABCDE')
print(list(gen7))
# 연산 (경우의 수)
gen8 = itertools.product('ABCDE', repeat = 2)
print(list(gen8))
# 그룹화
gen9 = itertools.groupby('AAABBCCCCDDEEE')
# print(list(gen9))
for chr, group in gen9:
print(chr, ' : ', list(group))
'공부 기록 > 파이썬' 카테고리의 다른 글
병렬성 (Parallelism) - Futures (0) | 2022.04.06 |
---|---|
병행성 (Concurrency) - 코루틴 (Coroutine), yield (0) | 2022.04.05 |
병행성 (Concurrency) - 기본 (0) | 2022.04.02 |
데코레이터 (Decorator) (0) | 2022.03.27 |
클로저 (Closure) 심화 (0) | 2022.03.26 |