import re
string = "(cos(0) + sin(180)) * tan(45.0) + not_a_tan(1)"
print re.sub(r'\b(cos|sin|tan)\s*\(\s*(\d+(?:\.\d+)?)\s*\)', r'\1(degres(\2))', string)
with(your_object)
. Надо следовать хорошим примерам, например, file object, работа с которым идет через with(open('workfile'))
.close()
и вызывать его вручную. Но если ваш код размазан так, что в него не получается вкрутить with, то нет гарантий что на какой-то ветке алгоритма вы забудете вызвать этот close()
.threading
(которые все равно упираются в GIL), а на "зеленых" потоках, например gevent, который создан для решения задач, подобной вашей, с максимальной производительностью.n
секунд, если ему больше нечего передавать. А сервер делает socket.settimeout(n+10)
и при вызове recv
отлавливает исключение socket.timeout
, которое сигнализирует, что клиент "отвалился".class ClassName(object):
def public_method(self):
pass
def _protected_method(self):
pass
def __private_method(self):
pass
import time
repeat_interval = 5
waiting_interval = 2
destination = time.time() + repeat_interval
for x in xrange(100000000):
# Your code here
time.sleep(0.001)
now = time.time()
if now > destination:
destination += repeat_interval
print('Go sleeping')
time.sleep(waiting_interval)
print('Waking up')
from collections import namedtuple
State = namedtuple('State', ('fx', 'previous'))
State.unit = staticmethod(lambda value=None: State(lambda: value, None))
State.bind = lambda self, fx: State(fx, self)
State.get = lambda self: self.fx(self.previous.get()) if self.previous else self.fx()
push = lambda value: lambda stack: (value, stack) if stack else value
pop = lambda stack: stack[1] if isinstance(stack, tuple) else stack
toList = lambda stack: toList(stack[1]) + [stack[0]] if isinstance(stack, tuple) else [stack]
print (State.unit()
.bind(push(1))
.bind(push(2))
.bind(push(3))
.bind(pop)
.bind(toList)
.get()) # [1, 2]
toList
- довольно медленная, приведена только для примера. статистика, fft, свертки, обработка звука и изображений, возможно немного распознавания
import re
from lxml import etree
doc = \
"""
<body>
<img alt='fdsfsd' src='CONST text1 text2'/>
adasd
<img alt='sadsdd' src='CONST text3 text4'/>
adasdas
</body>
"""
tree = etree.fromstring(doc, parser=etree.HTMLParser())
for img in tree.xpath('//img[@src]'):
img.attrib['src'] = re.sub(r'\s+', '_', img.attrib['src'])
def prev_cur_next(list_arg):
extended_list = [None]
extended_list.extend(list_arg)
extended_list.append(None)
return [extended_list[i - 1:i + 2] for i in xrange(1, len(extended_list) - 1)]