草庐IT

thread_pool

全部标签

python - multiprocessing pool.map 按特定顺序调用函数

如何让multiprocessing.pool.map按数字顺序分配进程?更多信息:我有一个程序可以处理几千个数据文件,为每个文件绘制一个图。我正在使用multiprocessing.pool.map将每个文件分发到处理器,并且效果很好。有时这需要很长时间,在程序运行时查看输出图像会很好。如果map进程按顺序分发快照,这会容易得多;相反,对于我刚刚执行的特定运行,分析的前8个快照是:0、78、156、234、312、390、468、546。有没有办法让它按数字顺序更紧密地分布它们?示例:这是一个包含相同关键元素的示例代码,并显示相同的基本结果:importsysfrommultipro

Python线程: can I sleep on two threading.事件()同时?

如果我有两个threading.Event()对象,并希望在其中一个被设置之前休眠,那么在python中是否有一种有效的方法来做到这一点?显然我可以对轮询/超时做一些事情,但我希望真正让线程休眠,直到设置一个,类似于select用于文件描述符的方式。那么在下面的实现中,wait_for_either的高效非轮询实现是什么样的?a=threading.Event()b=threading.Event()wait_for_either(a,b) 最佳答案 这是一个非轮询非过多线程解决方案:修改现有的Event以在它们发生变化时触发回调,

python - Django & Redis : How do I properly use connection pooling?

我有一个Redis服务器,我在几乎每个DjangoView上查询它以获取一些缓存数据。我已经阅读了一些stackoverflow问题,并了解到通过r=redis.StrictRedis(host='localhost',port=6379,db=0)为每个网络建立一个新的Redis连接请求不好,我应该使用连接池。这是我为Django中的连接池提出的方法:在settings.py中,我可以在任何DjangoView中轻松将其拉起,因为这就像一个全局变量:#RedisSettingsimportredisREDIS_CONN_POOL_1=redis.ConnectionPool(host

python - 在什么情况下我们需要使用 `multiprocessing.Pool.imap_unordered` ?

imap_unordered返回的迭代器的结果排序是任意的,而且它似乎并不比imap运行得快(我用以下代码检查),那么为什么要使用这种方法呢?frommultiprocessingimportPoolimporttimedefsquare(i):time.sleep(0.01)returni**2p=Pool(4)nums=range(50)start=time.time()print'Usingimap'foriinp.imap(square,nums):passprint'Timeelapsed:%s'%(time.time()-start)start=time.time()pri

python - 运行时错误 : main thread is not in main loop

当我打电话时self.client=ThreadedClient()在我的Python程序中,出现错误"RuntimeError:mainthreadisnotinmainloop"我已经做了一些谷歌搜索,但不知何故我犯了一个错误......有人可以帮我吗?完全错误:ExceptioninthreadThread-1:Traceback(mostrecentcalllast):File"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py",line530,in__boot

python 3 : does Pool keep the original order of data passed to map?

我编写了一个小脚本来在4个线程之间分配工作负载并测试结果是否保持有序(相对于输入的顺序):frommultiprocessingimportPoolimportnumpyasnpimporttimeimportrandomrows=16columns=1000000vals=np.arange(rows*columns,dtype=np.int32).reshape(rows,columns)defworker(arr):time.sleep(random.random())#lettheprocesssleeparandomforidxinnp.ndindex(arr.shape):

线程 Thread-1 中的 Python 异常(很可能在解释器关闭期间引发)?

我和我的friend一直在从事一个大型项目,以学习Python和PyGame并从中获得乐趣。基本上它是一个小村庄的人工智能模拟。我们想要一个昼夜循环,所以我找到了一种使用numpy更改整个表面颜色的巧妙方法(特别是交叉淡入淡出教程)-http://www.pygame.org/docs/tut/surfarray/SurfarrayIntro.html我在代码中实现了它,它可以工作,但速度非常慢,比如LearningaboutQueuemoduleinpython(howtorunit)我花了大约15分钟来制作一个基本系统,但一旦我运行它,窗口就会关闭并显示Exceptioninthr

python - 使用 threading.Thread.join()

我不熟悉python中的多线程,并尝试使用线程模块学习多​​线程。我制作了一个非常简单的多线程程序,但我无法理解threading.Thread.join方法。这是我制作的程序的源代码importthreadingval=0defincrement():globalvalprint"Insideincrement"forxinrange(100):val+=1print"valisnow{}".format(val)thread1=threading.Thread(target=increment,args=())thread2=threading.Thread(target=incr

python - multiprocessing.Pool 示例

我正在学习如何使用multiprocessing,并找到thefollowingexample.我想对值求和如下:frommultiprocessingimportPoolfromtimeimporttimeN=10K=50w=0defCostlyFunction(z):r=0forkinxrange(1,K+2):r+=z**(1/k**1.5)printrw+=rreturnrcurrtime=time()po=Pool()foriinxrange(N):po.apply_async(CostlyFunction,(i,))po.close()po.join()printwprin

python - 内存使用量随着 Python 的 multiprocessing.pool 不断增长

这是程序:#!/usr/bin/pythonimportmultiprocessingdefdummy_func(r):passdefworker():passif__name__=='__main__':pool=multiprocessing.Pool(processes=16)forindexinrange(0,100000):pool.apply_async(worker,callback=dummy_func)#cleanuppool.close()pool.join()我发现内存使用量(VIRT和RES)一直在增长,直到close()/join(),有什么解决方案可以解决这