调用一个函数,每个调用同时工作,而不是在队列中

时间:2014-07-29 03:03:32

标签: python

您好我想知道我可以使用什么方法来调用函数几次,并且每个调用都是并行处理的,而不是基于队列的处理。

沿着这条线的东西

import time
import random

def run(incoming):
        time.sleep(5)
        print incoming
        break
while True:
    hash = random.getrandbits(128)
    run(hash)
    time.sleep(1)

1 个答案:

答案 0 :(得分:1)

import time
import random
import threading

def run(incoming):
        time.sleep(5)
        print incoming


while True:
    hash = random.getrandbits(128)
    threading.Thread(target = run,args = (hash,)).start()
    time.sleep(1)

请注意,这会受到gil的限制,它会将进程交错...但是出于您的目的,您可以将其称为并行,并且由于您的线程数不断增长,最终可能会崩溃

有更好的方法可以让它检查出来

def do_hard_work(hash):
    time.sleep(1)
def Run(data_pipe):
   while True:
       while data_pipe.poll():
            hash = data_pipe.recv()
            if hash == "QUIT":
                  break
            threading.Thread(target=do_hard_work,args=(hash)).start()
            time.sleep(1)

local,remote = multiprocessing.Pipe()
worker_process = multiprocessing.Process(target=run,args=(local,))
worker_process.start()
while True:
    remote.send(random.getrandbits(128))
    time.sleep(1)
    if some_condition:
         remote.send("QUIT")
         break