例如,当我只使用一个进程实例化Pool时,我运行了一些Python代码并意识到:
from multiprocessing.pool import Pool
from time import sleep
def f(i):
print(i)
sleep(10)
with Pool(1) as p:
p.map(f, [i for i in range(100)])
实际上,目前正在运行五个进程。我还注意到了一个模式:如果我用1,2,3实例化Pool,.Python启动的进程数为5,6,7,.我很好奇:Pool是否使用三个过程进行管理?
N = multiprocessing.cpu_count()
with multiprocessing.Pool(processes = N) as p:
for result in user_detail:
arg1 = str(result).replace("[", "\"[")
arg = arg1.replace("]", "]\"")
#For Linux
cmd = 'python3 test.py
我正在运行一些Python程序,我注意到瓶颈在行中,执行以下操作
all(foo(s) for s in l)
我想知道的是--怎样才能把它变成并行计算呢?foo(s)是一种线程安全方法,它检查s并根据某些标准返回真假。foo不改变数据结构。
所以问题是
如何并行测试列表l中的所有元素是否都具有属性foo,当l的一个元素不满足foo时立即退出?
编辑。添加更多上下文。我不知道您在寻找什么样的上下文,但在我的场景中,s是一个图,foo(s)计算一些图的理论不变量(例如平均距离或类似的东西)。
让我首先说我没有使用队列,所以这个问题不是的副本,也不是进程池,所以它不是的副本。
我有一个Process对象,它使用线程工作池来完成某些任务。为了实现MCVE,这个任务只是从0到9构造一个整数列表。
#!/usr/bin/env python3
from multiprocessing.pool import ThreadPool as Pool
from multiprocessing import Process
from sys import stdout
class Quest():
def __init__(self):
pass
def doI
我有一个例子来说明我想做什么
queue = 2
def function():
print 'abcd'
time.sleep(3)
def exec_times(times):
#do something
function()
def exec_queue(queue):
#do something
function()
exec_times(3)
#things need be working while it waiting for the function finish
time.sleep(10)
结果应该是
如何从使用执行的进程中捕获异常
考虑下面的python脚本,它使用failFunction()在子进程内部执行一个简单的mulitprocessing.Process() (它会立即抛出运行时错误)
#!/usr/bin/env python3
import multiprocessing, time
# this function will be executed in a child process asynchronously
def failFunction():
raise RuntimeError('trust fall, catch me!')
# ex
在python多处理中,可以创建一个由30个进程组成的多处理池,以便在某些ID上处理一些长时间运行的等式。下面的代码在一台8核机器上产生30个进程,load_average从未超过2.0。事实上,30个使用者是一个限制,因为承载it的postgresql数据库的服务器有32个核,所以我知道如果我的数据库能够处理它,我可以产生更多的进程。
from multiprocessing import Pool
number_of_consumers = 30
pool = Pool(number_of_consumers)
我花了时间来安装芹菜,但无法重新创建这30个过程。我以为设置并发性,例如-c
对于下面的代码,我希望代码运行大约6秒,因为我期望参数0的调用几乎立即终止,参数100的调用在3秒后超时。
import multiprocessing
import threading
import time
import multiprocessing
def timeout_function_wrapper(function, args, timeout):
# Wrapper function to allow for proper results etc.
def auxiliary(n, out_q):
res = function(n)