[an error occurred while processing this directive]
[an error occurred while processing this directive]map(lambda A:filter(lambda x:x, [i not in [j*k for j in A for k in A] and i for i in A] ), [range(2,100)])[0]100って所をお好きな値に変えて下さい。もっときれいなご回答もお待ちしてます。
map(lambda A:filter(lambda x: x not in [j*k for j in A for k in A] and x, A), [range(2,100)])[0]高速版。
map(lambda x: map(lambda B:filter(lambda x:x, [i not in B and i for i in range(2, x)]), [[j*k for j in range(2,int(x**0.5)+1) for k in range(2,x/j+1)]]), [1000])[0]てかよく考えたらセミコロン使えるし…醒めた。
X=10000;A=range(2,X);_=[j*k in A and A.remove(j*k) for j in range(2,int(X**0.5)+1) for k in range(j,X/j+1)];Aてか素直にはこうか。
X=10;A=range(2,X);_=[i%j==0 and i in A and A.remove(i) for i in A for j in range(2,min(i-1,int(X**0.5)))];A
A=range(2,100) for i in A: if i not in [j*k for j in A for k in A]: print i[j*k for j in A for k in A]ってとこに合成数のリストが入ってます。それに入ってなかったら素数。
A=range(2,100) [i not in [j*k for j in A for k in A] and i for i in A]これで、合成数にはFalseが、素数にはその値が入った配列になる。([2, 3, False, 5, False, 7]みたいな)
A=range(2,100) filter(lambda x:x, [i not in [j*k for j in A for k in A] and i for i in A] )これで、合成数のFalseが消えて、素数だけの配列になる。([2, 3, 5, 7]みたいな)
map(lambda A:filter(lambda x:x, [i not in [j*k for j in A for k in A] and i for i in A] ), [range(2,100)])[0]これで変数Aの割り当ても一行に入れてしまった。
#!/usr/bin/env python import errno,os,random,re,select,socket,string,sys,time,struct,stat,threading dbg=2 def Ws(s): sys.stdout.write(s) sys.stdout.flush() def Es(s): sys.stderr.write(s) sys.stderr.flush() class Socket: """ A smart socket with sendInt and sendString """ def __init__(self, sock=None, peer=None): """ Create a socket """ """ peer : (hostname, port) """ if sock is None: self.sock = socket.socket(\ socket.AF_INET, socket.SOCK_STREAM) else: self.sock = sock self.peer = peer def connect(self, peer): """ Establish a connection """ assert peer is not None self.peer = peer self.sock.connect(self.peer) if self.sock is None: raise "Could not establish a connection to %s:%d"%(self.peer[0], self.peer[1]) if dbg >= 2: Es("New connection to %s:%d\n"%(self.peer[0], self.peer[1])) def close(self): """ Close the socket """ self.sock.close() def send(self, msg, msglen = -1): """ Safe send() """ if msglen == -1: msglen = len(msg) totalsent = 0 while totalsent < msglen: #t0 = time.time() sent = self.sock.send(msg[totalsent:]) #t1 = time.time() if sent == 0: raise RuntimeError, \ "socket connection broken" totalsent = totalsent + sent def recv(self, msglen): """ Safe recv() """ msg = '' while len(msg) < msglen: chunk = self.sock.recv(msglen-len(msg)) if chunk == '': raise RuntimeError, \ "socket connection broken" msg = msg + chunk return msg def rawrecv(self, msglen): try: return self.sock.recv(msglen) except: print msglen sys.exit(1) def sendInt(self, value): self.send(struct.pack('i', value)) def recvInt(self): msg = self.recv(struct.calcsize('i')) return struct.unpack('i', msg)[0] class ServerSocket: def __init__(self, initial_port=10000): """ Create a socket """ """ peer : (hostname, port) """ self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) for self.port in range(initial_port, 65535): try: self.sock.bind((socket.gethostbyname(socket.gethostname()), self.port)) except socket.error, msg: Es("Err: on bind(): %s\n"%msg) continue break if self.port == 65534: raise Exception("Failed to bind any port") self.sock.listen(5) # arg : number of backlog def accept(self): (conn,peer) = self.sock.accept() if dbg >= 2 : Es("Accepted from %s:%d\n"%(peer[0], peer[1])) return Socket(sock=conn, peer=peer) def close(self): self.sock.close() class SyncQueue: """ Synchronized queue """ def __init__(self): self.list = [] self.cond = threading.Condition() def dequeue(self): self.cond.acquire() while len(self.list) == 0: self.cond.wait() item = self.list.pop(0) self.cond.release() return item def enqueue(self, item): self.cond.acquire() self.list.append(item) self.cond.notify() self.cond.release() def isEmpty(self): return len(self.list) == 0 #------------------------------------------------------------------# def send(initial_port, sync_q, filesize): ss = ServerSocket(initial_port) print "PORT: %s"%(ss.port) sock = ss.accept() ss.close() t0 = time.time() sock.sendInt(filesize) # Ready to start transfer sent = 0 while sent < filesize: buf = sync_q.dequeue() if len(buf) == 0: Es("Err: pkt size is zero\n") sys.exit(1) sock.send(buf) sent += len(buf) sock.close() assert sent == filesize assert sync_q.isEmpty() t1 = time.time() if dbg >= 1: bps = float(filesize)/float(t1-t0) * 8 Es("t = %5.3f sec, %5.3f Mbps\n"%((t1-t0), bps/1024/1024)) def recv(host, initial_port, sync_q, pkt_size=1024 * 1024): sock = Socket() sock.connect(peer=(host, initial_port)) filesize = sock.recvInt() if dbg >= 1: Es("Filesize: %d\n"%(filesize)) rcvd = 0 while rcvd < filesize: s = filesize - rcvd if s > pkt_size: s = pkt_size buf = sock.rawrecv(s) if len(buf) == 0: Es("Connection reset by peer\n") sys.exit(1) rcvd += len(buf) sync_q.enqueue(buf) sync_q.enqueue("") if dbg >= 1: Es("Received every packet\n") assert rcvd == filesize def readfile(filepath, sync_q, filesize, pkt_size=1024 * 1024): """ Read a file, enqueue data to the Q (Do not enqueue empty buffer)""" fp = open(filepath, "r") readsize = 0 while readsize < filesize: buf = fp.read(pkt_size) readsize += len(buf) if len(buf) == 0: break sync_q.enqueue(buf) fp.close() assert readsize == filesize def writefile(filepath, sync_q): """ Dequeue data from the Q, write it on a file (use empty buffer as the end marker)""" fp = open(filepath, "w") while True: buf = sync_q.dequeue() if len(buf) == 0: break buf = fp.write(buf) fp.close() #----- def sendfile(filepath, initial_port): sync_q = SyncQueue() filesize = os.stat(filepath)[stat.ST_SIZE] if dbg >= 1: Es("Filepath: %s, size: %s\n"%(filepath, filesize)) threads = [ threading.Thread(target=readfile, args=(filepath, sync_q, filesize)), threading.Thread(target=send, args=(initial_port, sync_q, filesize)) ] for th in threads: th.start() for th in threads: th.join() if dbg >= 2: Es("All threads has exited\n") def recvfile(filepath, host, initial_port): sync_q = SyncQueue() threads = [ threading.Thread(target=writefile, args=(filepath, sync_q)), threading.Thread(target=recv, args=(host, initial_port, sync_q)) ] for th in threads: th.setDaemon(True) th.start() for th in threads: th.join() def main(): initial_port = 10000 if len(sys.argv) == 3: hn,port = sys.argv[1].split(":") port = int(port) host = socket.gethostbyname(hn) filepath = sys.argv[2] recvfile(filepath, host, port) elif len(sys.argv) == 2: filepath = sys.argv[1] sendfile(filepath, initial_port) main()
#!/usr/bin/env python import socket import threading import struct import os, sys, time, stat NOISY = True ## new socket class Socket: """ A smart socket with sendInt and sendString """ def __init__(self, sock=None, me=None, peer=None): """ Create a socket """ """ me : (hostname, port) """ """ peer : (hostname, port) """ if sock is None: self.sock = socket.socket(\ socket.AF_INET, socket.SOCK_STREAM) else: self.sock = sock self.peer = peer self.me = me def connect(self, peer = None): """ Establish a connection """ if peer is not None : self.peer = peer assert self.peer is not None self.sock.connect(self.peer) # if sock is None: # raise "Could not establish a connection to %s:%d"%(self.peer[0], self.peer[1]) # if NOISY : print "New connection to %s:%d"%(self.peer[0], self.peer[1]) def close(self): """ Close the socket """ self.sock.close() def send(self, msg, msglen = -1): """ Safe send() """ if msglen == -1: msglen = len(msg) totalsent = 0 while totalsent < msglen: sent = self.sock.send(msg[totalsent:]) if sent == 0: raise RuntimeError, \ "socket connection broken" totalsent = totalsent + sent def recv(self, msglen): """ Safe recv() """ msg = '' while len(msg) < msglen: chunk = self.sock.recv(msglen-len(msg)) if chunk == '': raise RuntimeError, \ "socket connection broken" msg = msg + chunk return msg def sendInt(self, value): self.send(struct.pack('i', value)) def recvInt(self): msg = self.recv(struct.calcsize('i')) return struct.unpack('i', msg)[0] def sendString(self, msg, length = -1): if length == -1: length = len(msg) self.sendInt(length) self.send(msg, length) def recvString(self): msglen = self.recvInt() return (self.recv(msglen)) def createServerSocket(self): """ Create a server socket """ self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sock.bind(self.me) self.sock.listen(5) # arg : number of backlog def accept(self): (conn,peer) = self.sock.accept() if NOISY : print "Accepted from %s:%d"%(peer[0], peer[1]) return Socket(sock=conn, peer=peer) def socket_test(src, port, fn): pkt_size = 1024 """ Test function for commons.Soecket """ def server_test(me, fn): sock = Socket(me=me) sock.createServerSocket() s = sock.accept() t0 = time.time() fp = open(fn, "rb") fs = os.stat(fn)[stat.ST_SIZE] s.sendInt(fs) read = 0 while True: X = fp.read(pkt_size) s.send(X) read += len(X) if read == fs: break fp.close() t1 = time.time() #print "Transfer time: %d sec"%(t1-t0) sz_mb = (float(fs)/1024 / 1024) t = (t1-t0) bw = sz_mb/(t1-t0) * 8 print "%8.1f MB / %4.1f sec = %8.1f Mb/sec sec"%(sz_mb, t, bw) def client_test(peer, fn): s = Socket(peer = peer) s.connect() t0 = time.time() fs = s.recvInt() fp = open(fn, "wb") rcvd = 0 while True: X = s.sock.recv(pkt_size) assert len(X) != 0 rcvd += len(X) fp.write(X) if rcvd == fs: break fp.close() t1 = time.time() s.close() assert rcvd == fs sz_mb = (float(fs)/1024 / 1024) t = (t1-t0) bw = sz_mb/(t1-t0)*8 print "%4.1f MB / %6.1f sec = %8.1f Mb/sec sec"%(sz_mb, t, bw) me = (socket.gethostbyname(socket.gethostname()), port) if me[0] == src: server_test(me, fn) else : client_test((src, port), fn) if len(sys.argv) != 4: print "Usage: %s FROMHOST PORT FILENAME"%(sys.argv[0]) sys.exit(1) src = socket.gethostbyname(sys.argv[1]) port = int(sys.argv[2]) fn = sys.argv[3] socket_test(src, port, fn)
#!/usr/bin/env python import os, sys, time, stat NOISY = True fns = {100:"100M", 200:"200M", 1024:"1G"} for key in fns: size = key * 1024 * 1024 fn = fns[key] fp = open(fn, "w") flagment = "01234567" * 1024 for i in range(0, size/len(flagment)): fp.write(flagment) fp.close()
class GxpPtn: def __init__(self, ptn_str): self.ptns = [] self.values = [] for s in ptn_str.split(): ptn_s,value = string.split(s, ":", 1) ptn = mk_host_regexp(ptn_s) self.ptns.append(ptn) self.values.append(value) def get(self, s): for i,ptn in enumerate(self.ptns): if ptn.match(s): return self.values[i] def mk_host_regexp(p): # gxp like istbs** --> istbs.* # quote '.' p1 = string.replace(p, ".", "\.") # ** matches everytihng including '.' p2 = string.replace(p1, "**", r".+") # * matches everytihng except '.' p3 = string.replace(p2, "*", r"[^\.]+") # ? matches a character except '.' p4 = string.replace(p3, "?", r"[^\.]") # p5 = string.replace(p4, "+", r"*") # return re.compile(p5 + "$") return re.compile(p5) gp = GxpPtn(ptn)
#!/usr/bin/env python3 import os,sys def process_file(orig, dest): なんかする def process(orig, dest): if os.path.isdir(orig): for f in os.listdir(orig): process(os.path.join(orig, f), os.path.join(dest, f)) elif orig.endswith(".csv"): os.makedirs(dest) destfile = os.path.join(dest, os.path.basename(orig)) process_file(orig, destfile) if len(sys.argv) < 4: print("Usage: %s ORIG DESTDIR"%(sys.argv[0])) sys.exit(1) process(sys.argv[1], sys.argv[2])